Стратегии отображения представлений в NHibernate

Кажется, что NHibernate должен иметь идентификационный тег, указанный как часть отображения. Это представляет проблему для представлений как большую часть времени (по моему опыту), представление не будет иметь идентификатора. Я отобразил представления прежде в 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  
8
задан Nathan Fisher 19 June 2013 в 03:56
поделиться

2 ответа

Вы можете сделать это немного чище, не сопоставляя Id со свойством и опуская генератор:

<id column="Id" type="guid"/>

Таким образом, вы сохраните проблему на уровне данных, без утечки деталей реализации в ваш домен.

5
ответ дан 5 December 2019 в 21:16
поделиться

Насколько мне известно, NHibernate потребует определение идентификатора или составного идентификатора , поскольку это механизм, с помощью которого он однозначно идентифицирует данную запись. Если не существует комбинации столбцов, которая предоставляет ключ для каждой строки в представлении, я думаю, вы застряли в хитрых обходных путях.

2
ответ дан 5 December 2019 в 21:16
поделиться
Другие вопросы по тегам:

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