小白学习之Code First

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了小白学习之Code First相关的知识,希望对你有一定的参考价值。

Code First约定:

注:EDMX模板 (SSDL:存储模型=>数据库表 ,CSDL:概念模型=>实体,C-S模型=>存储和概念模型之间的映射关系)

System.Data.Entity.ModelConfiguration.Conventions 命名空间

此命名空间包含描述一组规格的类,在使用code first的时候,这些规则用于自动基于类定义配置概念模型(实体类)

在上下文中我们创建了DbSet类集合,CodeFirst会根据DbSet为我们创建数据库表

 

技术分享
 1     public class StudentInfo
 2     {
 3         public int ID { get; set; }
 4         public string Name { get; set; }
 5         public char Gender { get; set; }
 6         public DateTime Birth { get; set; }
 7 
 8         public ClassInfo  ClassInfo { get; set; }
 9 
10         public Teacher Teacher { get; set; }
11     }
12     public class Teacher
13     {
14         public int ID { get; set; }
15         public string Name { get; set; }
16     }
17   public class CSContext:DbContext
18     {
19         public CSContext():base("name=ConnStr") //创建名为配置文件中指定的数据库
20         {
21         }
22         //学生和班级的集合
23         public DbSet<StudentInfo> StudentInfos { get; set; }
24         public DbSet<ClassInfo> ClassInfos { get; set; }
25         /// <summary>
26         /// 派生上下文模型初始化后,该模型锁定之前
27         /// </summary>
28         /// <param name="modelBuilder">DbModelBuilder 用于将 CLR 类映射到数据库架构。 此以代码为中心的方法称作“Code First”,可用于生成实体数据模型 (EDM) 模型</param>
29         protected override void OnModelCreating(DbModelBuilder modelBuilder)
30         {
31             // 首次访问数据库时调用数据库初始值设定项 默认值是:CreateDatabaseIfNotExists<TContext>  
32             //下面的值为模型发生改变时,删除数据库重建数据库    
33             Database.SetInitializer(new DropCreateDatabaseIfModelChanges<CSContext>());
34             base.OnModelCreating(modelBuilder);
35         }
36     }
View Code

 

尽管CSContext中没有定义Teacher这个类,但是运行程序后,code first照样为我们生成对应的数据库表

技术分享

code first推断出类,生成对应的数据库表及其主外键,主键默认的规则为类的属性名是否是id或类名+id,如果不是,就会报错。

StudentInfo中定义了ClassInfo导航属性,而ClassInfo中定义了ICollection<StudentInfo>导航属性,那么code first自动为我们创建一对多的关系

 

以上是关于小白学习之Code First的主要内容,如果未能解决你的问题,请参考以下文章

小白学习之pytorch框架-动手学深度学习(begin)

webpack学习之—— Code Spliting(代码分离)

小白学习之pytorch框架之实战Kaggle比赛:房价预测(K折交叉验证*args**kwargs)

大数据学习之小白如何学大数据?(详细篇)

小白学习之Hibernate 学习总结

API源码学习之集合--LinkedList