码迷,mamicode.com
首页 > 其他好文 > 详细

EntityFramework Core入门教程-08-修改关系数据2

时间:2020-07-30 18:14:51      阅读:68      评论:0      收藏:0      [点我收藏+]

标签:stroke   -name   isp   splay   article   rap   RKE   cti   class   

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


一、一对一关系表

(一)为导航属性赋新值
1 跟踪模式下为导航属性赋值,savechange() 新增一条导航属性表记录
2 离线模式下,Attach方法可以实现和跟踪模式下同样的效果

注:跟踪模式下
var player = context.Players
            .OrderBy(x => x.Id)
            .Last();
player.Resume = new Resume
{
    Description = "this is resume",
    Player = player
};
context.SaveChanges();

注:离线模式下,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)重新创建关系,插入到关系表

EntityFramework Core入门教程-08-修改关系数据2

标签:stroke   -name   isp   splay   article   rap   RKE   cti   class   

原文地址:https://www.cnblogs.com/springsnow/p/13404244.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!