gpt4 book ai didi

c# - Entity Framework 更新操作 - 为什么首先更新子记录?

转载 作者:太空狗 更新时间:2023-10-29 23:48:03 25 4
gpt4 key购买 nike

背景:UserUserSettings 之间存在1 对 0..1 关系。 p>

模型的重要部分如下:

public class User
{
public int UserId { get; set; }
public string Name { get; set; }
public UserSettings Settings { get; set; }
}

public class UserSettings
{
public int UserId { get; set; } // PK/FK
public sting SpecialField { get; set; }
}

当我执行INSERT时:

var user = new User { Settings = new UserSettings { SpecialField = "Foo" }};
ctx.Users.Add(user);
ctx.SaveChanges();

一切都很好,当我检查跟踪时,首先添加了 User,然后是 UserSettings - 正如您所期望的那样,因为 UserSettings需要来自 User 的 IDENTITY。

但是当我更新那个“SpecialField”时:

var user = ctx.Users.Include("Settings").Single();
user.Name = "Joe";
user.Settings.SpecialField = "Bar";
ctx.SaveChanges();

我看到跟踪显示 EF 首先更新 UserSettings,然后是 User

为什么?

这对我来说很重要,因为我的触发逻辑只需要在 SpecialField 更改时执行,并且它需要引用关于User 的数据。

谁能解释这种行为?有没有解决方法(除了 hack - 这会让我再次手动“触摸”特殊领域,这真的很糟糕)。

最佳答案

抱歉,我已经在我的电脑上试过你的模型了。一切都发生得很好。先更新用户(父),然后更新用户设置(子)。

我想,你的模型设置或数据库设置可能有问题,但我不知道是什么。

关于c# - Entity Framework 更新操作 - 为什么首先更新子记录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6477163/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com