zoukankan      html  css  js  c++  java
  • 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);
    }
  • 相关阅读:
    路由器欺骗(原始套接字五)
    ICMP拒绝服务攻击(原始套接字系列四)
    ping的实现(原始套接字系列三)
    原始套接字基础(原始套接字系列二)
    原始套接字简介(原始套接字系列一)
    MMS服务学习
    转 Qt 翻译
    为应用程序设置一个图标 (窗口左上角 程序图标)
    正则表达式
    《TCP/IP详解 卷1:协议》第4章 ARP:地址解析协议
  • 原文地址:https://www.cnblogs.com/kesteler/p/8964547.html
Copyright © 2011-2022 走看看