Entity framework core 实体框架:使用外键保存对象,而不在引用表中插入新对象

Entity framework core 实体框架:使用外键保存对象,而不在引用表中插入新对象,entity-framework-core,Entity Framework Core,我有两个表,它们首先是使用实体框架核心代码创建的。 应用程序用户及其颜色设置。创建新用户时,还会生成新的颜色设置。但当我保存时,会出现以下错误: INSERT语句与外键约束冲突 “FK_ColorThemeSetting_AspNetUsers_SettingsOwnerId”。冲突 发生在数据库“MyDb”表“dbo.AspNetUsers”列“Id”中。 声明已终止 我认为EF试图从外键id添加一个新用户。如何防止这种情况? 添加新的颜色设置: //user and appUser are

我有两个表,它们首先是使用实体框架核心代码创建的。
应用程序用户
及其
颜色设置
。创建新用户时,还会生成新的颜色设置。但当我保存时,会出现以下错误:

INSERT语句与外键约束冲突 “FK_ColorThemeSetting_AspNetUsers_SettingsOwnerId”。冲突 发生在数据库“MyDb”表“dbo.AspNetUsers”列“Id”中。 声明已终止

我认为EF试图从外键id添加一个新用户。如何防止这种情况? 添加新的颜色设置:

//user and appUser are correctly initialized
var themeConfig = new ColorThemeSetting();
themeConfig.PrimaryColor = user.PrimaryColor ?? "";
themeConfig.SecondaryColor = user.SecondaryColor ?? "";
themeConfig.SettingsOwnerId = appUser.Id;
unitOfWork.ColorThemeSettings.Add(themeConfig);
颜色设置类:

public class ColorThemeSetting
{
    public string PrimaryColor { get; set; }
    public string SecondaryColor { get; set; }

    public string SettingsOwnerId { get; set; }
    [ForeignKey("SettingsOwnerId")]
    public virtual ApplicationUser SettingsOwner { get; set; }
}

如果为新的
appUser
执行此代码,则此时的
appUser.Id
不正确,您最好设置导航属性,即
themeConfig.SettingsOwner=appUser
此时创建新数据库时,
appUser
已在数据库中。该id由新用户的正确id填充。@IvanStoev的内容是正确的。如果appUser已经保存在db中&如果您将正确的id分配给SettingsOwnerId,则不会出现FK冲突。如果您的用户未保存,则它将具有临时值,该值将在保存用户时被替换。最好使用导航属性。像那样传播临时值需要更多配置。如果为新的
appUser
执行此代码,则此时
appUser.Id
不正确,您最好设置导航属性,即
themeConfig.SettingsOwner=appUser
此时创建新数据库时,
appUser
已在数据库中。该id由新用户的正确id填充。@IvanStoev的内容是正确的。如果appUser已经保存在db中&如果您将正确的id分配给SettingsOwnerId,则不会出现FK冲突。如果您的用户未保存,则它将具有临时值,该值将在保存用户时被替换。最好使用导航属性。像这样传播临时值需要更多配置。