我的模型如下。
public class Holder
{
...
public List<Thing> Future { get;set; }
public List<Thing> Past { get;set; }
}
public class Thing
{
...
public Holder Holder { get; set; }
}
现在我尝试使用Fluent API告诉DB,每个Holder在将来只能有很多东西,而且过去也有很多东西。事物只能是未来或过去,但永远不能同时存在,所以事物只与单个持有者相关,但持有者可能有多个事物(分布在两个数组之间)。
我最好的经验是以下内容。
private static void OnModelCreating(EntityTypeBuilder<Thing> entity)
{
...
entity.HasOne(_ => _.Holder).WithMany(_ => _.Future);
entity.HasOne(_ => _.Holder).WithMany(_ => _.Past);
}
但是,当我尝试创建迁移时,EF会这样抱怨它。
无法在'Holder.Future'和'Thing.Holder'之间建立关系,因为'Holder.Past'和'Thing.Holder'之间已经存在关联。导航属性只能参与一个关系。
我不确定如何以正确和正确的方式解决它。我唯一能解决的问题是声明一个类 FutureThing 和 PastThing ,有效地复制了源代码。那是丑陋和糟糕的。
这是一个有点不寻常的场景,所有的谷歌搜索引出了设置简单关系的方法。我正在使用Core 2,我希望有一些东西可以促进这种情况。
我该如何计算?