zoukankan      html  css  js  c++  java
  • EntityFramework Core入门教程-08-修改关系数据2

    原文:https://blog.csdn.net/weixin_40719943/article/details/106963747


    一、一对一关系表

    (一)为导航属性赋新值

    1 跟踪模式下为导航属性赋值,savechange() 新增一条导航属性表记录

    注:跟踪模式下

    var player = context.Players
                .OrderBy(x => x.Id)
                .Last();
    player.Resume = new Resume
    {
        Description = "this is resume",
        Player = player
    };
    context.SaveChanges();

    2 离线模式下,Attach方法可以实现和跟踪模式下同样的效果

    注:离线模式下,attach
    var player2 = context.Players
                 .AsNoTracking()//离线模式
                 .FirstOrDefault();
    player2.Resume = new Resume
    {
        Description = "Resum2"
    };
    {
        using var newContext = new ContextDemo();
        newContext.Attach(player2);//player2 不会更新,会创建创建Resume一条记录
        newContext.SaveChanges();
    }
    

    (二)修改导航属性值(修改关联表)

    player2数据库中已经有一个Resume了,再重新赋值,saveChange()会有异常

    var player2 = context.Players
                 .FirstOrDefault();
    player2.Resume = new Resume
    {
        Description = "Resum3"
    };
    Context.SaveChanges();
    

    解决方案:使用Include
    原理:players查询出来之后,先从关联关系中删除就数据,再插入新数据

    var player2 = context.Players
                 .Include(e=>e.Resume)
                 .FirstOrDefault();
    player2.Resume = new Resume
    {
        Description = "Resum3"
    };
    context.SaveChanges();
    

    二、多对多关系表修改

    代码省略,比较简单:
    1)先删除关系表中记录
    2)重新创建关系,插入到关系表

  • 相关阅读:
    python遍历字典元素
    Asp.net网站优化【转】
    三、HTTP协议
    二、 OSI模型的实现TCP 、IP
    一、OSI模型
    JVM原理:4 运行期优化
    JS:jquery插件表格单元格合并.
    28-语言入门-28-1的个数
    27-语言入门-27-成绩转换
    26-语言入门-26-兄弟郊游问题
  • 原文地址:https://www.cnblogs.com/springsnow/p/13404244.html
Copyright © 2011-2022 走看看