• 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);
    }
  • 相关阅读:
    Search In Sorted Matrix I
    Closest In Sorted Array
    前端1-----A标签 (锚点)
    Python进阶----pymysql的安装与使用,mysql数据库的备份和恢复,mysql的事务和锁
    Linux安装nginx
    MySQL删除数据库或表(DROP DATABASE/table语句)
    MySQL 截取小数位数
    MYSQL实现上一条下一条功能
    CentOS7查询端口占用,清除端口占用的程序,开放端口,打开防火墙
    Linux下执行脚本文件出现-bash: ./startup.sh: /bin/sh^M: 坏的解释器: 没有那个文件或目录
  • 原文地址:https://www.cnblogs.com/kesteler/p/8964547.html
Copyright © 2020-2023  润新知