Кажется, что NHibernate должен иметь тег id, указанный как часть отображения. Это представляет проблему для представлений, поскольку в большинстве случаев (по моему опыту) представление не будет иметь идентификатора. Раньше я отображал виды в nhibernate, но, как я и делал, это казалось мне беспорядочным.
Вот надуманный пример того, как я это делаю в настоящее время.
Отображение
<class name="ProductView" table="viewProduct" mutable="false" >
<id name="Id" type="Guid" >
<generator class="guid.comb" />
</id>
<property name="Name" />
<!-- more properties -->
</class>
Просмотр SQL
Select NewID() as Id, ProductName as Name, --More columns
From Product
Класс
public class ProductView
{
public virtual Id {get; set;}
public virtual Name {get; set;}
}
Мне не нужен идентификатор для продукта, или в случае некоторых представлений у меня может не быть идентификатора для представления, в зависимости от того, имею ли я контроль над представлением
Есть ли лучший способ сопоставления видов с объектами в nhibernate?
Редактировать
Ответ пока что
Отображение
<class name="ProductView" table="viewProduct" mutable="false" >
<id name="Id" type="Guid" />
<property name="Name" />
<!-- more properties -->
</class>
Класс
public class ProductView
{
public virtual Name {get; set;}
//more properties
}
Просмотр SQL
Мне все еще нужен NewID ()?
Select NewID() as Id, ProductName as Name, --More columns
From Product