Code First:顾名思义:就是通过代码生成数据库----通过类生成数据库中对应的表:

首先定义两个类(就是建模的过程):

     public class Order
{
public int OrderId { set; get; } public string OrderCode { set; get; } public string CustormName { set; get; } public ICollection<OrderDetail> OrderDetails { set; get; }
}
     public class OrderDetail
{
public int OrderDetailID{set;get;}
public int OrderId { set; get; }
public decimal Cost { set; get; }
public Order Order { set; get; }
}

主要通过 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 然后和这个字段进行比对,如果相同就不删除重建,如果不同就删除重建。

表中有一条数据(Model属性 对 针对 数据库 的 架构  生成 的二进制数据,,每次对数据库进行操作的时候都会 对现有的 代码生成相应的  二进制数据 ,然后和  原来记录的数据 进行比对,如果不同,则删除数据库重建。)

EF4.1之基础(实现Code First)的更多相关文章

  1. .NET开发中基础问题,CODE First AND DB First(大牛自动忽略,小白可以看一下)

    最近在做一个新项目开发时,碰到了下面这个问题.在使用EF时,提示错误信息 To continue using Database First or Model First ensure that the ...

  2. [基础]VS Code 基础操作 命令符

    一.五种运行方式 1.点击IIS Express运行 实际上它开的是一个IIS Express服务器,就是说有一个小的代理服务器帮咱们运行,运行后就会启动一个IIS Express小型服务器,启动之后 ...

  3. 【Basics of Entity Framework】【EF基础系列1】

    EF自己包括看视频,看MSDN零零散散的学了一点皮毛,这次打算系统学习一下EF.我将会使用VS2012来学习这个EF基础系列. 现在看看EF的历史吧: EF版本 相关版本特性介绍 EF3.5 基于数据 ...

  4. EF7 Code First Only-所引发的一些“臆想”

    At TechEd North America we were excited to announce our plans for EF7, and even demo some very early ...

  5. 1.什么是Code First(EF Code First 系列)

    EF4.1中开始支持Code First .这种方式在领域设计模式中非常有用.使用Code First模式,你可以专注于领域设计,根据需要,为你一个领域的对象创建类集合,而不是首先来设计数据库,然后来 ...

  6. Code First :使用Entity. Framework编程(1) ----转发 收藏

    这个是在学习EF CodeFirst时发现的,对于初学者还是不错的.果断转发,方便自己以后查阅和学习. 对于学习Code First 这个教程讲解的还是很详细. 第一章:欢迎来到Code First ...

  7. MMORPG大型游戏设计与开发(服务器 游戏场景 掉落与网络连接)

    时间一点点的消逝,伴着自己空闲日子将要结束的时候我尽量的学习和分享场景和AI的知识给朋友们,不过很遗憾的是这些文章还有不足的地方,就是有的难点没有完全的分析到.掉落在游戏中必不可少的,同时网络连接也是 ...

  8. EF 知识点

    EntityFrameWorak知识点记录 发展史 EF1.0时,只支持Database First,数据库优先.必须将设计器指向一个现有的数据库. EF4时,支持Model First,模型优先.可 ...

  9. 10个优秀的Objective-C和iOS开发在线视频教程

    如果你自己开发iOS应用,你肯定会发现网上有很多资源.学习编程的一个最好的方法就是自己写代码,而开始写代码的最快的方式就是看其他人怎么写.我们从海量视频和学习网站中整理出了我 如果你自己开发iOS应用 ...

随机推荐

  1. js object 对象 属性和方法的使用

    //object 对象 属性和方法的使用 var person = new Object(); person.name="张海"; person.age="; perso ...

  2. projecteuler Sum square difference

    The sum of the squares of the first ten natural numbers is, 12 + 22 + ... + 102 = 385 The square of ...

  3. C语言开源项目

    值得学习的C语言开源项目 - 1. Webbench Webbench是一个在linux下使用的非常简单的网站压测工具.它使用fork()模拟多个客户端同时访问我们设定的URL,测试网站在压力下工作的 ...

  4. 在C#中对Datatable排序【DefaultView的Sort方法】

    在C#中对Datatable排序,[DefaultView的Sort方法] 代码如下: DataTable dt = new DataTable(); dt.Columns.Add("ID& ...

  5. 改变tabbar的高度做法

    UITabBarController *tabBarController =[[UITabBarController alloc] init]; CGRect frame = self.window. ...

  6. linux下不重启添加硬盘

    linux下热加载磁盘 临时给虚拟机加了一块硬盘,增加后懒得重启,于是看了看热加载 [root@centos5 ~]# cat /proc/scsi/scsiAttached devices:Host ...

  7. [转载]AppSettings和ConnectionStrings的区别

    AppSettings是ASP.NET1.1时期用的,在.NET Framework 2.0中,新增了ConnectionStrings. 1.<connectionStrings> &l ...

  8. Hide a Subpage Using PeopleCode

     There was a question asked on the forum on how to hid a subpage. There is no Peoplecode function to ...

  9. Asp.NET MVC 中使用 SignalR 实现推送功能

    一,简介Signal 是微软支持的一个运行在 Dot NET 平台上的 html websocket 框架.它出现的主要目的是实现服务器主动推送(Push)消息到客户端页面,这样客户端就不必重新发送请 ...

  10. windows实用技巧

    电脑如今已经非常普及,不过目前大多数电脑系统都是Win7/Win8.1或者Win10.你真的对自己电脑系统了解吗?今天小编为大家分享13个实用电脑技巧,会这些电脑技巧才叫牛哦! 13个实用电脑技巧 一 ...