• Entity Framework保存数据库中主有外键关系的主子表


    主表:PM_ITEM

     

     子表:PM_ITEM_DETAIL

     

     1、问题描述:

      主表的主键ID是自增长的,子表的ID是主键同时还是主表的外键,用EF对主子表进行事务保存的时候,因为主表的主键是不需要赋值的,所以如何保持主子表的ID保存时一致是个问题;子表的ID怎么和主表的ID一致?

    解决方法:

      EF给实体建立导航属性;

     

    2、备注:EF的类和属性对应数据库表名和字段时必须大写;联合主键在实体属性上必须添加 [Key] 特性

      

      

    using (context)
    {
      PmItem pmItem = new PmItem();
      pmItem.EQUIP_MODEL = equiptype;
      pmItem.CYCLE_TIME = int.Parse(time);
      pmItem.STATUS = "0";
      pmItem.CREATED_BY = GetLoginUser();
      pmItem.CREATED_AT = DateTime.Now;
      context.Set<PmItem>().Add(pmItem);

      int index = 0;
      foreach (var item in itmes)
      {
      index++;  
      PmItemDetail pmItemDetail = new PmItemDetail();
      pmItemDetail.PmItem = pmItem;    //重点是这一行,主子表的ID都不需要赋值,会自动同步
      int seqmax = context.PmItemDetail.Where(p => p.ID == pmItem.ID)?.OrderByDescending(t => t.SEQ).FirstOrDefault()?.SEQ ?? 1;
      pmItemDetail.SEQ = seqmax + index;
      pmItemDetail.TEXT = item.ToString();
      pmItemDetail.ISVISIBLE = "T";
      context.PmItemDetail.Add(pmItemDetail);
    }
    if (context.SaveChanges()>0)      //没有上面的处理这里会报错

    {
      return Json(new { status = true, message = "保存成功!" });
    }

  • 相关阅读:
    centos7 关闭firewall安装iptables并配置
    Dubbo与Zookeeper、SpringMVC整合和使用(负载均衡、容错)
    URL地址下载图片到本地
    IDEA常用快捷键
    电商的支付前、中、后这3个流程都是怎么设计的?
    jenkins的部署
    mysql 授权用户 主从和备份
    windows下利用iis建立网站网站并实现局域共享
    nginx反向代理 和部分优化
    LNMP的搭建 及地址转换
  • 原文地址:https://www.cnblogs.com/zmdblogs/p/13274303.html
Copyright © 2020-2023  润新知