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 = 2;
cus.CusName = "cus2";

List<OrderInfo> oiList = new List<OrderInfo>();
            OrderInfo oi1 = new OrderInfo { Id = 1, OrderContent = "订单1",CustomerId = 1 };
OrderInfo oi2 = new OrderInfo { Id = 2, OrderContent = "订单2", CustomerId = 1 };
oiList.Add(oi1);
oiList.Add(oi2);

List<Product> proList = new List<Product>();
Product pro1 = new Product { Id = 1, ProName = "产品1" };
Product pro2 = new Product { Id = 2, 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 == 1).ToList().FirstOrDefault();
List<OrderInfo> oiList = new List<OrderInfo>();
oiList = cus1.OrderInfo.ToList();
foreach (var oi in oiList)
{
      Console.WriteLine(oi.OrderContent);
}

 

posted @ 2018-04-27 21:22  黄豆kes  阅读(316)  评论(0编辑  收藏  举报