我有以下表结构:
Affiliations
Id Party1 Party2
1 100 200
2 300 400
以及通过 FKs of Affiliations引用的表格
Parties
Id Name
100 Hank
200 Ted
300 Kim
400 Joe
使用我的 Party 实体(未显示),我使用 Fluent API 定义了表之间的关系:
modelBuilder.Entity<Party>()
.HasMany(c => c.LeftPartyAffiliations)
.WithRequired()
.Map(m => m.MapKey("Party1"));
modelBuilder.Entity<Party>()
.HasMany(c => c.RightPartyAffiliations)
.WithRequired()
.Map(m => m.MapKey("Party2"));
派对实体将左右关系映射到它们各自的属性LeftPartyAffiliations和RightPartyAffiliations。通过定义上述规则,EF 自动将Party1和Party2添加到我的 Affiliations 表中。
我的问题在于,虽然每个隶属关系中的值都正确映射,但我无法知道左右两侧的隶属关系 ID 是什么,因为我通过我的党关系将这些表映射到我的列。
例如,我希望能够通过我的附属实体访问实际的 Party1 和 Party2 Id:
public class PartyAffiliation
{
...
[Column("Party1")]
public int Party1 { get; set; }
[Column("Party2")]
public int Party2 { get; set; }
...
}
...但这是不可能的,因为我已经通过 Fluent API 从 Party 映射到我的 Left 和 Right 集合来定义我的关系。
一个完美的情况将允许我进行 Fluent API 映射,这将创建列和关系,并允许我通过我的附属映射中定义的物理列访问我的 Party1 和 Party2 Id。
如果我尝试在实体和 Fluent API 中物理定义属性,我会得到:
类型中的每个属性名称都必须是唯一的。属性名称已定义为“xxx”
是否有解决此问题的方法或将列映射到多个属性而无需向数据库物理添加附加字段的方法?