FluentNHibernate를 자동 매핑 및 규칙과 함께 사용하여 데이터베이스를 만듭니다. 아래 그림과 같이 Person, Address 및 Job이라는 3 개의 테이블이 있습니다.Fluent nHibernate - ViewModel에 엔티티 병합
//Database table
public class Person()
{
public virtual int Id { get; set; }
public virtual string FirestName { get; set; }
public virtual string SecondName { get; set; }
public virtual PersonAddress Address { get; set; }
public virtual PersonJob Job { get; set; }
}
//Database table
public class PersonAddress()
{
public virtual int Id { get; set; }
public virtual string AddressLine1 { get; set; }
public virtual string AddressLine2 { get; set; }
public virtual string AddressLine3 { get; set; }
}
//Database table
public class PersonJob()
{
public virtual int Id { get; set; }
public virtual int Description { get; set; }
}
아래의 병합 뷰 모델을 사용하여 그리드에 Person 세부 정보 목록을 표시하려고합니다. 데이터베이스 테이블이 아니더라도 ViewModelPerson에 대한 매핑을 만들어야합니까 (오토 맵핑이 이에 영향을줍니다). 또는 nHibernate 쿼리를 사용하여 ViewModelPerson 엔터티 목록을 생성해야합니까?
//NOT database table - only used as ViewModel
public class ViewModelPerson()
{
public virtual int PersonId { get; set; }
public virtual string FirestName { get; set; }
public virtual string SecondName { get; set; }
//AddressLine1 + AddressLine2 + AddressLine3
public virtual int AddressId { get; set; }
public virtual string Address { get; set; }
public virtual int JobId { get; set; }
public virtual string Job { get; set; }
}
응답 해 주셔서 감사합니다. ViewModel on the Service layer 나는 최고의 쿼리 나 메소드에 대해 확신하지 못했습니다. 나는 정상적인 nHibernate 쿼리를 사용하고 AutoMapper를 사용하여 쿼리 결과에서 내 ViewModel을 채 웁니다. 이상적으로는 프로젝션을 사용하고 싶지만 경험이 없으므로 쿼리가 다소 복잡해졌습니다. 예를 들어, ViewModel에서 Address를 연결하는 것은 문제가있었습니다. – gisWeeper
알겠습니다. 하지만 NHibernate를 사용하면 다른 방법이 없습니다. 배우십시오;) 이것들은 여러분이 실험을 시작할 수있는 최상의 링크입니다 *. 검색어, 예상 음향, 변압기로 게임을 시작하면 ** 여기서 주저하지 않고 ** 답장을 보내 드리겠습니다. 그래서 : * 15. 조건 쿼리 * - http://nhforge.org/doc/nh/en/index.html#querycriteria 및 더욱 안전한 유형 * 16.QueryOver Queries * http://nhforge.org/doc/nh/en/index.html#queryqueryover. 또한 이것을 확인하십시오 * 19.1.5. 일괄 가져 오기 사용 * http://nhforge.org/doc/nh/en/index.html#performance-fetching-batch –
쿼리를 사용하고 방법을 모르는 경우 여기에서 도움을 받으십시오. 계속 전진 해 ... 일반적인 튜토리얼은 여기에서 다루지 않을 가능성이 높습니다. 내가 무슨 뜻인지 알 것 같아. http://stackoverflow.com/a/20970816/1679310 또는 http://stackoverflow.com/a/19287008/1679310 및이 Q & A를 확인하여 http://stackoverflow.com/questions를 통한 쿼리의 성능을 확인할 수 있습니다./20528760 / –