2017-10-19 270 views
0

我有先在实体框架6,.NET 4.7,Visual Studio的2017型号的麻烦......实体框架类型和属性不映射(错误11007和11009)

我试图加多到0 ... 1与两个表之间的外键,当我尝试验证模型时,我得到一个错误,说表中的外键字段没有映射。此外,我甚至无法将新实体添加到模型中,因为验证时出现错误,说实体未映射。它是如何进入这个状态的呢?我几乎没有使用它来做任何事情。

我该怎么做才能让它做到没有这些错误?我知道这是因为它没有映射的东西,但它应该自动做到这一点。整个事情似乎马虎,考虑到它的版本6.

我应该首先切换到数据库?

谢谢。

回答

0

的一套关系许多到0 ... 1,则必须

1)创建模型和FluentApi在Context类机型中添加相关的实体

public class MainModel 
{ 
    public MainModel() 
    { 
     ChildModels= new HashSet<ChildModel>(); 
    } 

    public int Id { get; set; } 

    public virtual ICollection<ChildModel> ChildModels{ get; set; } 
} 

public class ChildModel 
{ 
    public int Id { get; set; } 

    public int? MainModelId { get; set; } 
    public MainModel MainModel { get; set; } 
} 

2)套装关系

modelBuilder.Entity<MainModel>() 
      .HasMany(mm => mm.ChildModels) 
      .WithOptional(cm => cm.MainModel) 
      .HasForeignKey(cm => cm.MainModelId); 

在其中一个步骤中,您可能会犯错。

数据库首先是旧的方法,我不建议你使用它。

+0

好的谢谢你。我设法通过删除EF创建的所有实体并重建来实现它。这重新创建了实体和映射。验证模型,然后我可以生成数据库。可能我会坚持模型优先。 – indigo

相关问题