2015-08-25 8 views
0

В моем приложении я использую NHibernate ORM и Automapper для сопоставления объектов с моделью класса. Как: fluent-nhibernate/wiki/Auto-mappingОтображение представления db без модели Id для класса в NHibernate

Для столов его рабочий.

Проблема заключается в том, когда попытка отображения зрения БД без поля Id, как:

public class VTest 
{ 

    [NotNull] 
    public virtual AAATab AAA { get; set; } 
    [NotNull] 
    public virtual BBBTab BBB { get; set; } 

}

создать составной ключ:

public void Override(AutoMapping<VTest> mapping) 
    { 
     mapping.IgnoreProperty(x => x.Id); 
     mapping.CompositeId() 
       .KeyProperty(x => x.AAA.Id) 
       .KeyProperty(x => x.BBB.Id); 
    } 

но это не работает. Ошибка прибудете, becouse в запросе дб ​​есть выберите ID:

[GenericADOException: не удалось выполнить запрос [ВЫБРАТЬ this_.Id в Id7_0_, this_.AAAId в AAAId7_0_, this_.BBBId как BBB_7_0_ ОТ [VTEST ] this_]

Возможно ли использовать этот автомат для этого случая?

ответ

0

Я нахожу решения. В compositeKey должны использовать свойство существовать Физические точки зрения БД, поэтому я создавать новые свойства:

public virtual int AAAId {get;set;} 
public virtual int BBBId {get;set;} 

И я творю:

mapping.IgnoreProperty(x => x.Id); 
    mapping.CompositeId() 
      .KeyProperty(x => x.AAAId) 
      .KeyProperty(x => x.BBBId); 

Это Автоотображение для просмотра или таблицы без Id работ. (Для моделирования dbview или таблицы вам нужно добавить функцию переопределения Equals() и GetHashCode())

 Смежные вопросы

  • Нет связанных вопросов^_^