Беглое отображение NHibernate от одной колонки до композитного ключа - PullRequest
1 голос
/ 26 августа 2010

У меня есть ситуация, когда я определил сущность в моей доменной модели, в которой я хотел бы предоставить один столбец идентификатора.

public class OfferedProduct  
{  
    public virtual string Id {get; set;}  

    //other properties
}

Таблица устаревшей базы данных, на которую будет отображаться это

CREATE TABLE ProductGrouping  
MemberNumber INT NOT NULL,
GroupId CHAR NOT NULL,
...

Я не хочу ставить под угрозу модель предметной области, вводя два свойства и сопоставляя их с помощью конструкции "CompositeId".

CompositeId().KeyProperty(x => x.MemberNumber).KeyProperty(x => x.GroupId)

В идеале мне нужно объединить два значения в форме{MemberNumber} {GroupId} и предоставьте его в качестве значения Id.Затем я бы использовал пользовательский тип для обработки того, как эти значения объединяются при извлечении из БД и разбиваются на части при сохранении / выборе.

Я заметил, что метод "CompositeId" не позволяет использовать CustomType, как в случае сстандартный вызов "Id";но метод «Id» не дает возможности устанавливать несколько столбцов.Я видел примеры, когда люди использовали «Карту» для объединения двух столбцов, используя пользовательский тип, но не для значений идентификатора.

Я заметил, что «CompositeId» имеет перегрузку, которая может принимать пользовательский класс идентификации, ноЯ не уверен, как использовать его в этом сценарии.

 CompositeId<OfferedProductIdentifier>(x => x.?)

Любая помощь будет принята с благодарностью.

1 Ответ

0 голосов
/ 29 августа 2011

на случай, если кто-то придет сюда

CompositeId()
    .KeyProperty(t => t.Id, c =>
        c.Type(typeof(MyUserType)).ColumnName("MemberNumber").ColumnName("GroupId"));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...