System.Data.SqlClient.SqlException:无效的对象名称' dbo.PersonWorkplaces'。在从一对多变为多对多关系之后

时间:2016-10-04 07:59:34

标签: asp.net-mvc entity-framework ef-code-first

我已经改变了我的两个模型WorkplacePerson之间的一对多关系。实体框架已正确创建连接它们的表,它的名称为WorkplacePersons,并且它也准确填充。当我尝试在工作场所显示人员列表时,我得到了例外:

  

System.Data.SqlClient.SqlException:无效的对象名称' dbo.PersonWorkplaces'

因此,出于某种原因,它正在寻找不存在的PersonWorkplaces,而不是寻找WorkplacePersons

1 个答案:

答案 0 :(得分:0)

您可以在OnModelCreating

中定义DbContext

你需要告诉实体框架你想要映射的方式,因为它目前正在猜测并使表格错误。在OnModelCreating中添加如下内容:

protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
    base.OnModelCreating(modelBuilder);
    modelBuilder.Entity<Workplace>()
        .HasMany(x => x.Persons)
        .WithMany(x => x.Workplaces)
        .Map(c =>
        {
            c.MapLeftKey("WorkplaceId");
            c.MapRightKey("PersonId");
            c.ToTable("WorkplacePersons"); 
        });
}