发文章
发文工具
撰写
网文摘手
文档
视频
思维导图
随笔
相册
原创同步助手
其他工具
图片转文字
文件清理
AI助手
留言交流
Code First:顾名思义:就是通过代码生成数据库----通过类生成数据库中对应的表:
首先定义两个类(就是建模的过程):
1 public class Order 2 { 3 public int OrderId { set; get; } 4 5 public string OrderCode { set; get; } 6 7 public string CustormName { set; get; } 8 9 public ICollection<OrderDetail> OrderDetails { set; get; } 10 }
1 public class OrderDetail 2 { 3 public int OrderDetailID{set;get;} 4 public int OrderId { set; get; } 5 public decimal Cost { set; get; } 6 public Order Order { set; get; } 7 }
主要通过 DbContext实现的,所以要定义一个继承DbContext的基类
public class DbEntities:DbContext { //对应实体的 两个类,生成对应的数据库中的表 public DbSet<Order> Orders { set; get; }//set/get:代表是可读写的 public DbSet<OrderDetail> OrderDetails { set; get; } static DbEntities() { Database.SetInitializer<DbEntities>(new DropCreateDatabaseIfModelChanges<DbEntities>());//如果没有这条语句,那么模型和 数据库架构不同时 就会报错 } }
重要讲解的是这个静态构造函数:相当于对于整个应用程序域建立了一个标准,当初始化 DbContext的时候就会通过调用Database 的初始化的方法 SetInitiallizer方法进行检查现在的模型和数据库的架构是否相同,如果不相同 就通过参数
new DropCreateDatabaseIfModelChanges<DbEntities>() 删除数据库然后新建。
这时可能大家就会问了,内部是通过什么进行检查模型和数据库的架构是否相同的呢?
如果大家注意的话,就会发现,当我们生成数据库的时候会发现,生成我们定义的数据库表的同时页生成了一个 名字为EdmMetadata,而且他的里面一面只有两个一个字段(一个是Id,另一个就是Modelhash),这个Modelhash很重要:是通过模型生成的对应的hash值,当初始化的时候就会 先对当前模型生成对应的 hash 然后和这个字段进行比对,如果相同就不删除重建,如果不同就删除重建。
来自: 昵称10504424 > 《工作》
0条评论
发表
请遵守用户 评论公约
EF Code First学习笔记 初识Code First
EF Code First学习笔记 初识Code Firstpublic class BreakAwayContext : DbContext { public DbSet<Destination> Destinations { get; set; } public DbSet<Lodging> Lod...
C# Newtonsoft.Json 类解析json字符串时,注意中括号[]
Json 类解析json字符串时,注意中括号[]Json.JsonSerializationException:“Cannot deserialize the current JSON array (e.g. [1,2,3]) into type ''ConsoleApp_quhao.result'' becaus...
DBcontext应用于已存在数据库
DBcontext应用于已存在数据库。public IDbSet<BlogUser> BlogUsers { get;/// <summary> /// 会在app.config或者web.config文件中查找BlogDB节,做为连接字符串 /// 但数据库中必须已存在...
C# get set
C# get set有了Set你就可以从外面给它赋值,有了get就可以得到它的值。方便更改需求 如果说有人让你把所有的StrName都加一个"_"的前缀那么如果public string strName;,你用了100个地方,就...
.NET Core 中生成验证码
public class CaptchaResult{ /// <summary> /// CaptchaCode /// </summary> public string CaptchaCode { get;} /// <...
Entity Framework Code First (一)Conventions
写给新手:零起点学习数据库访问,使用刚刚发布的 EF 4.1。Entity Framewo...
} } class UserGroup { public int ID { get;然后我们来定义关系,非常简单:在User类里面添加一个UserGroup类型的成...
在ASP.NET MVC3中使用EFCodeFirst 1.0
在Tag类中:public ICollection<Post> Posts { get; set; }var links = new List<FriendLink> { new FriendLink{ Name=&quo...
c# – 为什么Entity Framework在一个SaveChanges()中添加多个项目这么慢?
}}public class FooContext : DbContext{ public DbSet<Foo> Foos { get;class Program{ static void Main(string[] args) { var foos = Enumerable.// Make sure the timing doesn''...
微信扫码,在手机上查看选中内容