为什么我无法删除相关实体

时间:2017-01-18 16:44:13

标签: c# sql-server entity-framework ef-code-first

这是我的数据库图表: enter image description here

现在,每当我从UserSettings.Instance.SetValue(SettingsKey.Username, "AwesomeUser"); String username = UserSettings.Instance.GetValue(SettingsKey.Username); 表中删除记录时,我都想删除相关的Factors1记录。即级联删除。所以我使用流畅的API获得以下代码:

Factors

但是这会引发以下错误:

  

声明的导航属性Models.Factors.Details与指定导航的结果不兼容。

这是我的模特:

 protected override void OnModelCreating(DbModelBuilder modelBuilder)
 {
      modelBuilder.Entity<Factors>()
      .HasOptional(r => r.Details).WithOptionalDependent()
      .WillCascadeOnDelete(true);
 }

我发布了我的模型,并且上述重复帖子中的答案也没有解决我的问题。

1 个答案:

答案 0 :(得分:0)

您的映射定义了FactorFactors之间的一对一关联,但实际上它是一对多的关联。我认为EF可以通过告诉你一对一关联的目标不能是一个集合来做得更好。无论如何,你应该把它改成

modelBuilder.Entity<Factors>()
            .HasMany(r => r.Details).WithRequired(d => d.Factors)
            .WillCascadeOnDelete(true);

顺便说一句,让自己(以及未来的读者)受宠,并修复这种高度欺骗性的命名。