Быстрый NHibernate, выбирающий представление без уникального идентификатора

Я пытаюсь отобразить представление без идентификатора, но nhibernate все еще генерирует sql с идентификационным столбцом (предоставление мне ошибка SQL, так как столбец ID не делает существует в дб). Возможно, я неправильно понимаю идентификатор () конструктор?

конструктор комментирует:

Создайте идентификатор, который не имеет соответствующего свойства в объекте области или столбца в базе данных. Это главным образом для использования с доступом только для чтения и/или представлениями. Значения по умолчанию к международным идентификационным данным с "инкрементным" генератором.

public class PersonMapping : ClassMap<Person>
{
    public PersonMapping()
    {
        Table("person");
        ReadOnly();

        Id();
        Map(f => f.Name, "name");
    }
}
12
задан Wyass 27 May 2010 в 10:44
поделиться

1 ответ

NHibernate требует ID. Документ метода говорит, что он создает идентификатор, который не имеет соответствующего свойства в вашем доменном объекте, однако в базе данных все еще есть идентификатор.

Если в вашей таблице нет поля, которое можно было бы пометить как идентификатор (должно быть уникальным ...), возможно, вы можете попытаться идентифицировать некоторые столбцы, которые можно составить как составной идентификатор.

Рассмотрим, например, простую таблицу ссылок, которая связывает один int с другим int, например

A | B
-----
1 | 2
1 | 3
2 | 2

, вы можете использовать Composite ID, если все комбинации A / B уникальны.

public PersonMapping()
{
    [...]
     CompositeId()
         .KeyProperty(x => x.A)
         .KeyProperty(x => x.B);
    [...]
}
8
ответ дан 2 December 2019 в 21:22
поделиться
Другие вопросы по тегам:

Похожие вопросы: