C# 单向DB first many to many with map似乎仍然需要导航属性
该应用程序对一个预先存在的数据库使用EF 6.1 我有一个单向的多对多关系,从(更改了类名,使这个示例更加愚蠢)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'. 有人能
粉丝
到名人
。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
,但不确定这是否足够。您是否已验证数据库已应用所有迁移?听起来您尝试了不同的配置,将其应用于数据库,但没有正确回滚/撤消。或者什么的,是的,或者什么的。我想出来了,请看答案。谢谢你发这个帖子。这会让我整天烦死的!