C# 单向DB first many to many with map似乎仍然需要导航属性

C# 单向DB first many to many with map似乎仍然需要导航属性,c#,.net,entity-framework,C#,.net,Entity Framework,该应用程序对一个预先存在的数据库使用EF 6.1 我有一个单向的多对多关系,从(更改了类名,使这个示例更加愚蠢)粉丝到名人。e、 g.粉丝的每个实例都跟随一个或多个名人,但是名人的每个实例都不跟踪哪个粉丝跟随所述名人 为此,Fan类具有指向ICollection的导航属性,但反之亦然。从下面的map类中可以看到,一个复合表链接了这两个类 不幸的是,var-highests=db.highests.ToList()获取错误信息: Invalid column name 'Fan_Id'. 有人能

该应用程序对一个预先存在的数据库使用EF 6.1

我有一个单向的多对多关系,从(更改了类名,使这个示例更加愚蠢)
粉丝
名人
。e、 g.
粉丝的每个实例
都跟随一个或多个
名人
,但是
名人
的每个实例都不跟踪哪个
粉丝
跟随所述
名人

为此,
Fan
类具有指向
ICollection
的导航属性,但反之亦然。从下面的map类中可以看到,一个复合表链接了这两个类

不幸的是,
var-highests=db.highests.ToList()获取错误信息:

Invalid column name 'Fan_Id'.
有人能告诉我我做错了什么吗?在同一个应用程序中,我有许多单向的一对多关系。实体及其映射的(略)缩写:

public class Celebrity
{
    public int Id { get; set; }
    public string Name { get; set; }
    // by design, no navigation property to ICollection<Fan>
}

public class Fan
{
    public int Id { get; set; }
    public string Name { get; set; }
    public virtual ICollection<Celebrity> FollowedCelebrities { get; set; }
}

public class CelebrityMap : EntityTypeConfiguration<Celebrity>
{
    public CelebrityMap()
    {
        HasKey(t => t.Id);
        ToTable("Celebrities");
        Property(t => t.Id).HasColumnName("CelebrityId");
        Property(t => t.Description).HasColumnName("Name");
    }
}

public class FanMap : EntityTypeConfiguration<Fan>
{
    public FanMap()
    {
        HasKey(t => t.Id);
        ToTable("Fans");
        Property(t => t.Id).HasColumnName("FanId");
        Property(t => t.Name).HasColumnName("Name");

        HasMany(t => t.FollowedCelebrities)
            .WithMany()
            .Map(m =>
            {
                m.ToTable("FanCelebrityAssignments");
                m.MapLeftKey("FanId");
                m.MapRightKey("CelebrityId");
            });
    }
}
公共级名人
{
公共int Id{get;set;}
公共字符串名称{get;set;}
//根据设计,ICollection没有导航属性
}
公共级风扇
{
公共int Id{get;set;}
公共字符串名称{get;set;}
公共虚拟ICollection跟随属性{get;set;}
}
公共类CelebrityMap:EntityTypeConfiguration
{
公共庆典地图()
{
HasKey(t=>t.Id);
ToTable(“名人”);
属性(t=>t.Id);
属性(t=>t.Description);
}
}
公共类扇形图:EntityTypeConfiguration
{
公共扇形图()
{
HasKey(t=>t.Id);
ToTable(“风扇”);
属性(t=>t.Id);
属性(t=>t.Name);
有许多(t=>t.跟随性)
.有很多
.Map(m=>
{
m、 ToTable(“FanCelebrityAssignments”);
m、 MapLeftKey(“FanId”);
m、 MapRightKey(“CelebrityId”);
});
}
}

虽然我很想删除这个问题并偷偷溜走,但我会把它留给将来的参考和其他像我这样的人

在我的数据上下文类中,有一个
OnModelCreating(DbModelBuilder modelBuilder)
override,在这个override中有许多映射类分配给
modelBuilder.Configurations


不幸的是,虽然
FanMap
存在,但它不是添加到
配置中的类之一。我添加了它,现在一切正常。

我不确定如何修复此问题,但异常意味着它假设在表
名人
中创建了一些
粉丝Id
列(当然不存在)。不知何故,它假定
粉丝之间的关系是
one-many
(而应该是
many-many
)。我可以看到您试图在
FanMap
内将关系配置为
many-many
,但不确定这是否足够。您是否已验证数据库已应用所有迁移?听起来您尝试了不同的配置,将其应用于数据库,但没有正确回滚/撤消。或者什么的,是的,或者什么的。我想出来了,请看答案。谢谢你发这个帖子。这会让我整天烦死的!