我正在努力使我的地图正确。
我所拥有的是一个单独的自我连接表,其中包含某些类型的查找值。每个查找都可以有一个父类,它可以是不同的类型。
为了简单起见,我们来看看Country和State的例子。
所以查找表看起来像这样:
查找 ID 键 值 LookupType ParentId - 自我加入Id
基类
公共类查找:BaseEntity { public Lookup(){}
public Lookup(string key, string value)
{
Key = key;
Value = value;
}
public virtual Lookup Parent { get; set; }
[DomainSignature]
[NotNullNotEmpty]
public virtual LookupType LookupType { get; set; }
[NotNullNotEmpty]
public virtual string Key { get; set; }
[NotNullNotEmpty]
public virtual string Value { get; set; }
}
查找地图
public class LookupMap : IAutoMappingOverride<DBLookup>
{
public void Override(AutoMapping<Lookup> map)
{
map.Table("Lookups");
map.References(x => x.Parent, "ParentId").ForeignKey("Id");
map.DiscriminateSubClassesOnColumn<string>("LookupType").CustomType(typeof(LookupType));
}
}
子类的BASE SubClass映射
public class BaseLookupMap:SubclassMap其中T:DBLookup {
protected BaseLookupMap()
{
}
protected BaseLookupMap(LookupType lookupType)
{
DiscriminatorValue(lookupType);
Table("Lookups");
}
}
示例子类映射
public class StateMap : BaseLookupMap<State>
{
protected StateMap() : base(LookupType.State) { }
}
现在我已经几乎设置了我的映射,但是映射仍然期望每个类的表设置,所以期望一个'State'表存在,并引用状态查找表中的ID。
我希望这是有道理的。
当想要保持查找类型值可配置时,这似乎不是一种不常见的方法。
提前致谢。
的Al