EF(二)Model Fiirst
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的更多相关文章
- 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 ...
- Entity Framework(EF的Model First方法)
EntityFramework,是Microsoft的一款ORM(Object-Relation-Mapping)框架.同其它ORM(如,NHibernate,Hibernate)一样, 一是为了使开 ...
- MVC系列之二 Model层细解
一.简介 在上一篇将MVC的时候,有很有朋友对简单三层的概念不是很熟悉,因此,今天进行简单三层的一个简单介绍,同时为理解MVC中的Model做知识累计. 传统的三层主要指的是UI层,BLL层,DAL层 ...
- EF的Model First
一,添加ADO.NET实体数据模型(即edmx) 1,添加edmx 新建一个类库项目,项目中添加新项,选择数据/ADO.NET实体数据模型,如下图. 点击添加,实体数据模型向导窗口 ...
- EF Core Model更新迁移
EF Core 迁移 感觉就是以前EF Code First的自动同步数据库功能 内容:在你新增.更新TableModel后,如何自动化的更新DB中的真实Table.以及对这些更改进行一个版本控制. ...
- MySql+EF <二>
C#使用Mysql+EF架构项目有一系列问题. 一.EF没有Mysql的驱动,这个需要自己安装2个插件 ①mysql-connector-net-6.9.10.msi ②mysql-for-visua ...
- EF修改model自动更新数据库
最近用MVC+EF学习时遇到修改model后而数据库没更新报错,就在网上找关于数据迁移自动更新数据库的,折腾了大半天终于弄了出来 第一步:在程序包管理器控制台里: Enable-Migrations ...
- pureMVC简单示例及其原理讲解二(Model层)
本节将讲述Model层. Model层有VO和Mediator组成,非常简单,仅仅包含两个类:UserVO和UserProxy. UserVO中的构造器用于初始化用户的添加(通过email和密码),另 ...
- Yii框架(二)Model处理数据
熟悉php的autoload机制,自己实现一个autoload函数 一.复习框架: basic/ 应用根目录 composer.json Composer 配置文件, 描述包信息 config/ 包含 ...
随机推荐
- 初始Mkaefile
初识MakefIle 在学习Linux过程中,我越发的觉得Linux系统给了使用者更大的自由,同时也就增加了学习的成本.在gcc下去调试代码,没有了熟悉的VS,没有的人性话的错误提示(当然Makefi ...
- 关于linux上部署定时python脚本
遇到的坑: Python脚本中的文件操作,最好都用绝对路径, 文件头上写 #!/usr/local/bin/python3.6 ----------------------------------- ...
- yum clear all无反应
卸载重装yum 操作系统版本:centos7 [root@linux-node3 ~]# uname -r 3.10.0-514.el7.x86_64 一.将现有的yum源卸载 [root@linux ...
- 2019-2-20C#开发中常用加密解密方法解析
C#开发中常用加密解密方法解析 一.MD5加密算法 我想这是大家都常听过的算法,可能也用的比较多.那么什么是MD5算法呢?MD5全称是 message-digest algorithm 5[|ˈmes ...
- mac上adb command not found
第一种报错(使用的自带mac命令行) bash: adb: command not found 1.vim ~/.bash_profile ,如果.bash_profile不存在,先touch ~/. ...
- JAVA使用POI如何导出百万级别数据(转)
https://blog.csdn.net/happyljw/article/details/52809244 用过POI的人都知道,在POI以前的版本中并不支持大数据量的处理,如果数据量过多还会 ...
- Spark on Yarn with HA
Spark 可以放到yarn上面去跑,这个毫无疑问.当Yarn做了HA的时候,网上会告诉你基本Spark测不需做太多的关注修改,实际不然. 除了像spark.yarn开头的相关配置外,其中一个很重要的 ...
- 7. Buffer_包描述文件_npm常用指令_fs文件读写_模块化require的规则
1. Buffer 一个和数组类似的对象,不同是 Buffer 是专门用来保存二进制数据的. 特点: 大小固定: 在创建时就确定了,且无法调整 性能较好: 直接对计算机的内存进行操作 每个元素大小为1 ...
- Android自定义控件之日历控件
标签: android 控件 日历 应用 需求 2015年09月26日 22:21:54 25062人阅读 评论(109) 收藏 举报 分类: Android自定义控件系列(7) 版权声明:转载注 ...
- flex 左边固定宽度,右边自适应
<div id="flex"> <div id="left">我在边,定宽</div> <div id="r ...