我正在尝试为我的数据库播种,但我遇到了问题。我正在使用Entity Framework中的一对一/ null关系。 下面是我的实体对象和关系。
public class ApplicationSetting
{
//This is the primary key of this table entity
public int ApplicationSettingID { get; set; }
public string SmtpServer { get; set; }
public string AlternateCompanyEmail { get; set; }
public int SmtpPort { get; set; }
public string SmtpUsername { get; set; }
}
public class LivechatSetting
{
[System.ComponentModel.DataAnnotations.Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)] //This is giong to enable an auto increment on the field
public int? ApplicationSettingID { get; set; }
public string LivechatEmail { get; set; }
public int OperatorsMaximumchat { get; set; }
public TimeSpan ResumptionTime { get; set; }
public TimeSpan ClosingTime { get; set; }
public TimeSpan ChatTimeOut { get; set; }
}
我的DatabaseContext类中的关系
modelBuilder.Entity<ApplicationSetting>()
.HasOptional(client => client.LivechatSetting)
.WithRequired(client => client.ApplicationSetting);
我能够将数据成功保存到我的数据库中的ApplicationSetting
实体表中。
但是当我尝试使用ApplicationSetting
表的id将值赋入我的LivechatSetting
表时,我得到以下错误。
ReferentialConstraint中的依赖属性映射到a 存储生成的列。列:'ApplicationSettingID'。描述: 在执行当前期间发生了未处理的异常 网络请求。请查看堆栈跟踪以获取更多信息 错误以及它在代码中的起源。
异常详细信息:System.InvalidOperationException:依赖项 ReferentialConstraint中的属性映射到存储生成的 柱。列:'ApplicationSettingID'。
来源错误:
第26行:context.LivechatSettings.Add(setting);线 27:第28行:result = context.SaveChanges();
答案 0 :(得分:2)
最后我自己解决了。按照该链接寻求解决方案。 weblogs.asp.net/manavi/archive/2011/05/01/...。我按照他们的例子
答案 1 :(得分:0)
根据我的理解,如果“ApplicationSettingID”字段是“ApplicationSetting”表的主键
如果“Livechatsetting”被引用为“ApplicationSettingID”作为外键的表。
将“Livechatsetting”的“ApplicationSettingID”作为身份(自动生成的字段)自然会出错