NHibernate / Fluent - Отображение нескольких объектов в одну таблицу поиска - PullRequest
1 голос
/ 17 марта 2010

Я немного изо всех сил в правильном отображении.

То, что у меня есть, - это отдельная самообъединенная таблица поиска значений определенных типов. У каждого поиска может быть родитель, который может быть другого типа.

Для простоты, давайте возьмем пример страны и штата.

Итак, таблица соответствия будет выглядеть так:

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...