【发布时间】:2019-02-20 03:03:16
【问题描述】:
我正在尝试在 EF Core 中创建一个导航属性,该属性将根据两个属性的值有条件地设置其引用。我不确定这是否可能。
让我举个例子:假设我有一个实体的层次结构,例如Country、State、County 和City。我还有一个名为Law 的实体,它可以由任何分层实体“拥有”。
所以,我创建了这个枚举:
public enum OwnerType
{
Country,
State,
County,
City
}
...和Law 类:
public class Law
{
public int Id { get; set; }
public OwnerType OwnerType { get; set; }
public int OwnerId { get; set; }
}
现在我想设置Law 类,使其具有一个导航属性,该属性将OwnerId 链接到基于OwnerType 值的相应实体的主键。
我考虑将其添加到 Law 类中:
public virtual object Owner { get; set; }
或者创建每个分层实体都将实现的IOwner 接口,然后我会添加它:
public virtual IOwner Owner { get; set; }
但是我不知道如何使用EntityTypeBuilder 设置EntityTypeConfiguration。这显然行不通:
builder.HasOne(x => x.Owner).WithMany(x => x.Laws).HasForeignKey(x => x.OwnerId);
我真的不知道如何完成我在这里尝试做的事情。有什么想法吗?
【问题讨论】:
-
我建议你画个类图你就明白了。
标签: c# .net-core entity-framework-core navigation-properties