• EF CodeFirst 初识


    随着EntityFramework的发展,原先的三种方式,{Code First ,Model First,Database First }  CodeFirst基本摆脱了另外两种方式

    成为了 最受欢迎的一种编程模型。 我们通过先编写代码,然后自动生成数据库。 程序员只需专心的面向对象写代码,而无需再写烦人的各种Sql语句。

    新建控制台项目,通过Nuget引入EF库
    增加两个类 
         public class Blog
        {
            public string ID { get; set; }
            public string BlogName { get; set; }
            public string BlogAuthor { get; set; }
            public virtual List < Post> Posts { get ; set ; }      //导航属性
    
        }
        public class Post
        {
            public string ID { get; set; }
            public string PostName { get; set; }
            public string Content { get; set; }       
            public virtual Blog BelongBlog { get; set; }      //导航属性
        }
    这两个类属于一对多的关系,一个博客可以有多个博文。
    EF的核心在于DBContext类,可以说就是这个类负责着实体和数据库之间的交互
    所以增加一个context类
    public class BlogContext : DbContext
        {
            private readonly static string CONNECTIONSTRING = "Data Source=.;Initial Catalog=EFBlog;User       ID=sa;Password=11111;Integrated Security=True;Pooling=False";
            public BlogContext():base (CONNECTIONSTRING)
            {
            }
            public DbSet < Blog> Blogs { get ; set ; }
            public DbSet < Post> Posts { get ; set ; }
        }
    注意需要连接字符串, 然后提供Dbset集合,以后的程序中,就可以通过这些集合获取数据了。
    在main中如下
            public static void Main( string [] args)
            {
                BlogContext ctx = new BlogContext ();
                ctx.Blogs.Add( new Blog { ID = "1", BlogName = "Jason's Blog" , BlogAuthor = "Jason",
                    Posts = new List < Post> {
                        new Post {ID="1" ,PostName= "shenwei",Content= "今天的阳光真好,要晒被子!" },
                        new Post {ID="2" ,PostName= "shenwei",Content= "今天下雨了,都不能出去玩!" }
                    } });
                ctx.Blogs.Add( new Blog { ID="2" ,BlogName="Code Home",BlogAuthor= "zhangxiaomao"});
                ctx.SaveChanges();
                Console .ReadKey();
    运行之后 数据库如下
     主键      可以发现 主键每个类都各自对应一张表,而主键也自动有了,原因是 在EF默认规则下 EF会 自动把ID或者 类名+ID的字段设置为主键,如果不存在这样的字段则会报错
    不过 我们当然也可以通过在DataAnnotations在字段上 标记[ key ] 特性,来指明 主键。
     外键      当codefirst发现我们的类之间存在一对多的关系时,会自动化在相应的表里生成外键,这样一来,类之间的关系就很清楚了。
     
    select * from posts
     
     
    select * from blogs
     
     
    好了,暂时就到这里。(求推荐!)
     
  • 相关阅读:
    搭建Linux Kettle服务端重装系统软件或帮助
    JFrame加载Browser,Jxbrowser导入
    Bonita了解
    基于用户控件固定菜单MenuStrip/ToolStripMenuItem列表及动态菜单列表,是上一篇文章的综合和升级
    winfrom打开本地默认浏览器或打开IE浏览器
    Winfrom动态添加MenuStrip菜单,同时绑定反射事件,可扩展后期动态配置
    给GroupBox动态添加一个按钮,实现展开和折叠功能
    Rest导出Excel文件流
    List<HashMap>排序,List内存分页
    解决idea项目部署到Tomcat时Artiface没有文件
  • 原文地址:https://www.cnblogs.com/JasonShenW/p/5084066.html
Copyright © 2020-2023  润新知