首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >EF核心附加/更新嵌套对象的嵌套对象

EF核心附加/更新嵌套对象的嵌套对象
EN

Stack Overflow用户
提问于 2021-06-28 13:40:12
回答 1查看 138关注 0票数 1

使用.Includes和.ThenIncludes检索数据非常有意义,而且非常有效,非常棒!我的问题是更新第三级。这是在断开连接的情况下发生的,我下面的代码已经针对示例进行了简化。如果你能检索到n层深的数据,那么你肯定也能更新n层深的数据,对吧?

代码语言:javascript
运行
复制
public class Person
{
public int id { get; set; }
    public int? Address { get; set; }

    public virtual Address AddressNavigation { get; set; }
}

public class Address
{
    public int id { get; set; }
    public string Street { get; set; }
    public string Street2 { get; set; }
    public int? City { get; set; }
    public int? State { get; set; }
    public string Zip { get; set; }

    public virtual City CityNavigation { get; set; }
    public virtual State StateNavigation { get; set; }
}

public class City
{
    public int id { get; set; }
    public string Name { get; set; }
}

public class State
{
    public int id { get; set; }
    public string Name { get; set; }
}

现在,如果我想要更新City或State,我似乎可以执行以下操作:

代码语言:javascript
运行
复制
person.AddressNavigation.CityNavigation.id = 2;

context.Attach(person);
context.Entry(person).State = EntityState.Modified;
context.SaveChanges();

但是,一旦调用了.Attach,person.AddressNavigation.CityNavigation.id的先前值就会更改回原始值,从而不会将任何更改保存到数据库中。为什么会发生这种情况?我目前使用的是EF Core 5.0.5

EN

Stack Overflow用户

回答已采纳

发布于 2021-06-28 13:47:29

你必须手动更新它,ef core不能自动检测到更改。请参阅this answer

票数 0
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68158067

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档