博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
小白学习之Code First(二)
阅读量:7033 次
发布时间:2019-06-28

本文共 1846 字,大约阅读时间需要 6 分钟。

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

 

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

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

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

 

转载于:https://www.cnblogs.com/oren/p/7310512.html

你可能感兴趣的文章
远程使用sudo 执行命令,慎用!
查看>>
TMD我可知道[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]神马意思了
查看>>
《飞机大战》安卓游戏开发源码(三)
查看>>
JMS - JMS应用领域 应用场景
查看>>
[转]一步一步教你做ios推送
查看>>
【整理】关于 va_copy 的兼容性问题
查看>>
Struts秘籍之起式:第1.7式:使用Ant进行构建和部署
查看>>
python字符串/元组/列表/字典互转
查看>>
Spring Boot 入门 - 进阶篇(4)- REST访问(RestTemplate)
查看>>
Yii框架数据库多数据库、主从、读写分离
查看>>
升级到 OS X Yonsemite 10.10后 Verions 崩溃
查看>>
Oracle共享池
查看>>
oracle JOB常见的执行时间
查看>>
自动补0
查看>>
Python如何批量给云主机配置安全组?
查看>>
iOS音频播放 (四):AudioFile
查看>>
Oracle 存储过程异常处理
查看>>
URL里面存在下划线导致SESSION在IE下被分隔
查看>>
自定义注册的 Windows服务 无法访问网络共享文件解决办法
查看>>
postgersql日志备份和还原
查看>>