EF4.1之基础(实现Code First)
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)的更多相关文章
- .NET开发中基础问题,CODE First AND DB First(大牛自动忽略,小白可以看一下)
最近在做一个新项目开发时,碰到了下面这个问题.在使用EF时,提示错误信息 To continue using Database First or Model First ensure that the ...
- [基础]VS Code 基础操作 命令符
一.五种运行方式 1.点击IIS Express运行 实际上它开的是一个IIS Express服务器,就是说有一个小的代理服务器帮咱们运行,运行后就会启动一个IIS Express小型服务器,启动之后 ...
- 【Basics of Entity Framework】【EF基础系列1】
EF自己包括看视频,看MSDN零零散散的学了一点皮毛,这次打算系统学习一下EF.我将会使用VS2012来学习这个EF基础系列. 现在看看EF的历史吧: EF版本 相关版本特性介绍 EF3.5 基于数据 ...
- EF7 Code First Only-所引发的一些“臆想”
At TechEd North America we were excited to announce our plans for EF7, and even demo some very early ...
- 1.什么是Code First(EF Code First 系列)
EF4.1中开始支持Code First .这种方式在领域设计模式中非常有用.使用Code First模式,你可以专注于领域设计,根据需要,为你一个领域的对象创建类集合,而不是首先来设计数据库,然后来 ...
- Code First :使用Entity. Framework编程(1) ----转发 收藏
这个是在学习EF CodeFirst时发现的,对于初学者还是不错的.果断转发,方便自己以后查阅和学习. 对于学习Code First 这个教程讲解的还是很详细. 第一章:欢迎来到Code First ...
- MMORPG大型游戏设计与开发(服务器 游戏场景 掉落与网络连接)
时间一点点的消逝,伴着自己空闲日子将要结束的时候我尽量的学习和分享场景和AI的知识给朋友们,不过很遗憾的是这些文章还有不足的地方,就是有的难点没有完全的分析到.掉落在游戏中必不可少的,同时网络连接也是 ...
- EF 知识点
EntityFrameWorak知识点记录 发展史 EF1.0时,只支持Database First,数据库优先.必须将设计器指向一个现有的数据库. EF4时,支持Model First,模型优先.可 ...
- 10个优秀的Objective-C和iOS开发在线视频教程
如果你自己开发iOS应用,你肯定会发现网上有很多资源.学习编程的一个最好的方法就是自己写代码,而开始写代码的最快的方式就是看其他人怎么写.我们从海量视频和学习网站中整理出了我 如果你自己开发iOS应用 ...
随机推荐
- [Nginx 1] Nginx简介
导读:现在项目中用到这个Nginx了,本来是想着把代码调通了就得了.想想还是花点时间总结总结,就利用门卫思维吧.今天主要是一个整体的介绍,然后在学习的过程中,接着总结Nginx的其他使用事宜. 一.什 ...
- centos7 搭建docker内运行rabbitmq,然后再镜像ha方案的完全教程,暂时一个宿主机只能运行一个docker的rabbitmq,但是集群 ha都正常
1.安装centos7.x,配置好网络2.因为docker需要比较高版本的内核,比如使用overlayfs作为默认docker文件系统要3.18,所以先升级内核到3.18以上版本,能直接过4是最佳了检 ...
- 对像转成 和 byte 互转类库方法
using System; using System.IO; using System.Runtime.Serialization; using System.Runtime.Serializatio ...
- Windows phone 8 学习笔记(9) 集成(转)
本节整理了之前并没有提到的Windows phone 8 系统相关集成支持,包括选择器.锁定屏幕的.联系人的访问等.选择器列举了若干内置应用提供的相关支持:锁定屏幕展示了我们可以对锁定屏幕提供背景图像 ...
- Question2Answer初体验
Question2Answer初体验 高质量的问答社区十分有价值,很多无法解决的问题能通过问答社区找到解决办法,而对于站长来说,垂直的问答社区也很有潜力.最近盯上问答这一块,发现和我的一些思路很符 ...
- Chrome不能登录和同步的解决方法
打开 C:\Windows\System32\drivers\etc 下的 hosts文件 #SmartHosts START #Google Services START .docs.google. ...
- javaSE第五天
第五天 22 1. 方法(掌握) 22 (1)方法:就是完成特定功能的代码块. 22 (2)格式: 22 (3)两个明确: 23 (4)方法调用 23 (5)案例: ...
- CentOS 卸载已安装软件
根据软件的安装类型,选择合适的卸载方式: 卸载前确定软件的完整的版本号:#rpm -qa ×××*#rpm -ql xxx-xxx //查找安装目录 执行卸载命令:#rpm -e xxx-xxx # ...
- 对象之间的引用传递 之 .NET中的深拷贝和浅拷贝
1.场景 首先,场景是这样的. 有一个Person类,类中有一个类型是Car的属性.用于表述,人开的车. Car类中有一些描述诸如汽车拼盘之类的属性.基本场景就是这样. 2.浅拷贝 Person ...
- URI中的常用属性
aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAA00AAACDCAIAAADea2ciAAAgAElEQVR4nOz9eTxU////j8/Y930pIb