Model First 是先利用某些工具(如VS的EF设计器)设计出可视化的实体数据模型及他们之间的关系,然后再根据这些实体、关系去生成数据库对象及相关代码文件。

一、设计实体数据模型,生成数据库

1、创建空的EF实体模型

2.设计需要的实体

这里需要说明标量属性即常规字段,导航属性一般自动生成,复杂属性是向表里写数据,是插一个实体。按F4可以操作字段的属性。

3.添加关联

这里就涉及导航属性的自动添加。注意多对多关系是不会产生外键,但是会产生一张中间表,这张中间表是存放多对多的数据明细。

4.根据模型生成数据库

之后会生成sql脚本。

其中CustomerProduct这张表就是多对多关联产生的中间表,我们来看下表的字段

虽然能自动生成多对多关系的中间表,我们也可以自己去设计中间表。中间表和另外两张表的关系都是多对一。在一般的工作中,都会通过自己定义中间表,而不是自动生成自动表。

二、Model First生成后的文件

基本和DB First相同。

三、CRUD操作

CRUD的基本操作和DB First没有什么变化,这里就随便写个插入操作

Model1Container dbContext = new Model1Container();

Customer cus = new Customer();
cus.Id = ;
cus.CusName = "cus2"; List<OrderInfo> oiList = new List<OrderInfo>();
OrderInfo oi1 = new OrderInfo { Id = , OrderContent = "订单1",CustomerId = };
OrderInfo oi2 = new OrderInfo { Id = , OrderContent = "订单2", CustomerId = };
oiList.Add(oi1);
oiList.Add(oi2); List<Product> proList = new List<Product>();
Product pro1 = new Product { Id = , ProName = "产品1" };
Product pro2 = new Product { Id = , ProName = "产品2" };
proList.Add(pro1);
proList.Add(pro2); dbContext.Customer.Add(cus);
foreach (var oi in oiList)
{
dbContext.OrderInfo.Add(oi);
}
foreach (var pro in proList)
{
dbContext.Product.Add(pro);
}
dbContext.SaveChanges();

查询

Model1Container dbContext = new Model1Container();

Customer cus1 = dbContext.Customer.Where(p => p.Id == ).ToList().FirstOrDefault();
List<OrderInfo> oiList = new List<OrderInfo>();
oiList = cus1.OrderInfo.ToList();
foreach (var oi in oiList)
{
Console.WriteLine(oi.OrderContent);
}

EF(二)Model Fiirst的更多相关文章

  1. Mysql –>EF edmx(model first)–> Sql server table

    一.mysql environment When we create an new database,first We need draw er diagram for somebody to sho ...

  2. Entity Framework(EF的Model First方法)

    EntityFramework,是Microsoft的一款ORM(Object-Relation-Mapping)框架.同其它ORM(如,NHibernate,Hibernate)一样, 一是为了使开 ...

  3. MVC系列之二 Model层细解

    一.简介 在上一篇将MVC的时候,有很有朋友对简单三层的概念不是很熟悉,因此,今天进行简单三层的一个简单介绍,同时为理解MVC中的Model做知识累计. 传统的三层主要指的是UI层,BLL层,DAL层 ...

  4. EF的Model First

    一,添加ADO.NET实体数据模型(即edmx) 1,添加edmx         新建一个类库项目,项目中添加新项,选择数据/ADO.NET实体数据模型,如下图.   点击添加,实体数据模型向导窗口 ...

  5. EF Core Model更新迁移

    EF Core 迁移 感觉就是以前EF Code First的自动同步数据库功能 内容:在你新增.更新TableModel后,如何自动化的更新DB中的真实Table.以及对这些更改进行一个版本控制. ...

  6. MySql+EF <二>

    C#使用Mysql+EF架构项目有一系列问题. 一.EF没有Mysql的驱动,这个需要自己安装2个插件 ①mysql-connector-net-6.9.10.msi ②mysql-for-visua ...

  7. EF修改model自动更新数据库

    最近用MVC+EF学习时遇到修改model后而数据库没更新报错,就在网上找关于数据迁移自动更新数据库的,折腾了大半天终于弄了出来 第一步:在程序包管理器控制台里: Enable-Migrations ...

  8. pureMVC简单示例及其原理讲解二(Model层)

    本节将讲述Model层. Model层有VO和Mediator组成,非常简单,仅仅包含两个类:UserVO和UserProxy. UserVO中的构造器用于初始化用户的添加(通过email和密码),另 ...

  9. Yii框架(二)Model处理数据

    熟悉php的autoload机制,自己实现一个autoload函数 一.复习框架: basic/ 应用根目录 composer.json Composer 配置文件, 描述包信息 config/ 包含 ...

随机推荐

  1. win7电脑蓝牙 耳机

    == services.msc 然后点击确定. 在服务中我们找到关于蓝牙的设置,双击进入. 将启动类型改成自动或手动,确定后就能使用蓝牙啦. == win7电脑蓝牙耳机 记得之前链接耳机的时候 需要下 ...

  2. angular.isString()

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  3. 一种常见的maven打包后同名文件冲突错误

    在使用一些开源框架的时候(比如spark.hadoop.lucene等),偶尔会见到说找不到某个具体实现类或者某个配置(比如spark的akka配置)不见了. 部分例子如下: [Lucene]An S ...

  4. debian包的补丁管理工具:quilt

    最近项目是改pam软件包,给里面添加一些功能.其中遇到了更改后,代码提交方式的问题.这里转载的文章介绍了使用quilt管理补丁的详细方法: 转自:http://blog.csdn.net/fmddlm ...

  5. (82)Wangdao.com第十六天_JavaScript 异步操作

    异步操作 单线程模型 指的是,JavaScript 只在一个线程上运行 也就是说,JavaScript 同时只能执行一个任务,其他任务都必须在后面排队等待 注意,JavaScript 只在一个线程上运 ...

  6. [LeetCode] Implement Rand10() Using Rand7() 使用Rand7()来实现Rand10()

    Given a function rand7 which generates a uniform random integer in the range 1 to 7, write a functio ...

  7. Axure软件界面及元件

    Axure 软件的需求史 功能:用来制作快速原型的软件.也可以绘制中保真原型草图. (适用人群:产品经理,交互设计师,UI设计师,网页设计师, 想要自己提升的人[重]) 原型分类: 低保真原型(草图) ...

  8. CSS---光标cursor设置、浮动布局与clear的关系

    光标设置 {cursor:auto;}--光标根据需要自动变化. {cursor:crosshair;}--光标变成“+”. {cursor:pointer;}--光标变成手指模式. {cursor: ...

  9. Java 通过getbean取出的类为什么要强转为接口类

    这个问题是之前一个同学问我的,这些是我在网上找到的资料,由于我自己也没有完全搞明白,先大概记录一下 首先问题是为什么在bean文件中注入的是实现类,但是通过getBean()取出的时候却必须强制转化为 ...

  10. Socket断开不报错(Java)

    网上看了很多关于Socket的Demo,用起来挺好用也简单,不过都在断开连接时,都没有做好相关处理,导致每次主动断开时,会报错 如: java.net.SocketException: Socket ...