【发布时间】:2019-07-11 22:47:59
【问题描述】:
是否可以有两个(或多个)相同类型的导航属性?
我的模型看起来像这样......
public class Agreement
{
public int Id { get; set; }
public Guid? BuyerId { get; set; }
public Guid? SellerId { get; set; }
public AgreementInfo ByerAgreementInfo { get; set; }
public AgreementInfo SellerAgreementInfo { get; set; }
}
public class AgreementInfo
{
// PK is AgreementId and OwnerActorId combined.
public int AgreementId { get; set; }
public Guid OwnerActorId { get; set; }
public string Name { get; set; }
}
...我正在尝试通过匹配 AgreementId 和 ByerId/SellerId 来包含导航属性...
modelBuilder.Entity<Agreement>().HasOne(x => x.ByerAgreementInfo).WithOne().HasForeignKey<Agreement>(x => new {x.Id, x.ProviderId});
modelBuilder.Entity<Agreement>().HasOne(x => x.SellerAgreementInfo).WithOne().HasForeignKey<Agreement>(x => new { x.Id, x.RequesterId });
...但这会导致循环依赖。
有什么方法可以在不使用外键的情况下包含这些属性?或者是否有其他解决方案(除了向信息表添加 id 列)允许我将信息表行用作协议类中的导航属性?
【问题讨论】:
-
检查我的答案。它应该适合你。
标签: c# .net entity-framework .net-core entity-framework-core