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冲突。如果您的用户未保存,则它将具有临时值,该值将在保存用户时被替换。最好使用导航属性。像这样传播临时值需要更多配置。