Я немного изо всех сил в правильном отображении.
То, что у меня есть, - это отдельная самообъединенная таблица поиска значений определенных типов. У каждого поиска может быть родитель, который может быть другого типа.
Для простоты, давайте возьмем пример страны и штата.
Итак, таблица соответствия будет выглядеть так:
Lookups
Я бы
ключ
Значение
LookupType
ParentId - самостоятельное присоединение к Id
базовый класс
открытый класс Lookup: 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 для подклассов
открытый класс 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