【发布时间】:2015-03-29 04:03:35
【问题描述】:
我想实现以下目标:
public class A
{
public int ID { get; set; }
public string Name { get; set; }
public virtual ICollection<B> Bs { get; set; }
}
public class B
{
public int ID { get; set; }
public string Name { get; set; }
public virtual ICollection<A> As { get; set; }
}
public class C
{
public int AID { get; set; }
public int BID { get; set; }
public string OtherProperty { get; set; }
}
A 和 B 很多很多,由 C 连接。但是,C 也有它自己的一些属性,这就是为什么我需要表示它。
我想从 A 直接到 Bs,而不必先经过 C。 (以及从 B 到 As)
如果 C 简单地连接 A 和 B 而没有额外的属性,这将很容易。但是因为 C 有额外的属性,我需要表示它,所以我得到了以下错误。
无法为实体集或单例“A”自动绑定实体类型“A”上的导航属性“Bs”,因为有两个或更多匹配的目标实体集或单例。匹配的实体集或单例是:B,Bs。
这是我的映射帮助...
modelBuilder.Entity<A>()
.HasMany<B>(x => x.Bs)
.WithMany(x => x.As)
.Map(x =>
{
x.MapLeftKey("a_id");
x.MapRightKey("b_id");
x.ToTable("c");
});
【问题讨论】:
-
你能写自定义
CConfiguration : EntityTypeConfiguration<C>吗? -
@abatishchev 我不熟悉,你能解释一下吗?
-
非此即彼。要么你的类模型中有C,你必须收集
A的Bs到C,或者你有一个纯粹的多对多关联,C不是模型的一部分,你不能访问OtherProperty。
标签: c# .net entity-framework entity-framework-6 navigation-properties