【发布时间】:2015-03-17 22:47:07
【问题描述】:
我有两个实体 DataTag 和 CalcDataTag:
public class CalcDataTag : BaseModel
{
[Column("CalcDataTagId")]
public override Guid ID { get; set; }
public Guid DataTagId { get; set; }
public DataTag DataTag { get; set; }
public Guid ChildDataTagId { get; set; }
public DataTag ChildDataTag { get; set; }
}
public class DataTag : BaseModel
{
[Column("DataTagId")]
public override Guid ID { get; set; }
public ICollection<CalcDataTag> CalcDataTags { get; set; }
}
我这样设置上下文:
modelBuilder.Entity<DataTag>()
.HasMany<CalcDataTag>(x => x.CalcDataTags)
.WithRequired(x => x.ChildDataTag)
.HasForeignKey(x => x.ChildDataTagId);
modelBuilder.Entity<DataTag>()
.HasMany<CalcDataTag>(x => x.CalcDataTags)
.WithRequired(x => x.DataTag)
.HasForeignKey(x => x.DataTagId);
CalcDataTags 列表应该是 CalcDataTags 列表,其中 DataTagId 或 ChildDataTagId 等于 DataTag 的 ID,但设置上下文的方式,底部设置覆盖顶部设置,我只得到一个 CalcDataTags 列表,其中DataTagId 等于 DataTag 的 ID。如果我切换设置,那么我只会得到一个 CalcDataTags 列表,其中 ChildCalcDataTagId 等于 DataTag 的 ID。基本上我想要得到的是两个列表的联合。每个实体只有一个 PrimaryKey,没有复合键。
【问题讨论】:
-
你的意思是复合外键吗?
.HasForeignKey(x => new { x.DataTagId, x.ChildDataTagId });. -
In CalcDataTag I have two foreign keys to CalcDataTag (DataTag and ChildDataTag) and in DataTag I have a list of CalcDataTags.这有点令人困惑。最终结果表应该是什么样子?或者你能上传ER图吗? -
刚刚澄清,添加实体代码是否更有意义?
标签: c# entity-framework