2010-12-13 2 views
1

Fluent NHibernate에는 엔티티를 자동으로 매핑하는 간단한 방법이 있습니까?C# 유창한 nhibernate

의 내가 하나를 다음과 해당 classmaps 같은 몇 가지 클래스가 있다고 가정 해 봅시다 : Fluent NHibernate같은 것이 "Hello 같은 모든 매핑 개체 추가"를했다 않습니다, 그래서

public sealed class Hello 
{ 
    public String Name { get; set; } 
    public DateTime Timestamp { get; set; } 
} 

public class HelloMapping : ClassMap<Hello> 
{ 
    public HelloMapping() 
    { 
     Not.LazyLoad(); 
     // Some Id here 
     Map(x => x.Name).Not.Nullable().Length(64); 
     Map(x => x.Timestamp).Not.Nullable(); 
    } 
} 

를?

만약 아니라면, NHibernate가 제공되는 매핑을 사용하게하는 가장 쉬운 방법은 무엇입니까?

답변

3

"좋아요"란 의미에 따라 다릅니다.

동일한 네임 스페이스에있는 모든 항목을 의미합니까? 그러면 할 수 있습니다

public class MyConfiguration : DefaultAutomappingConfiguration { 
    public override bool ShouldMap(Type type) { 
     return type.Namespace == typeof(Hello).Namespace; 
    } 
} 

무슨 뜻이든, 달성하고자하는 일을하기 위해 규칙을 설정할 수 있습니다. auto mapping in Fluent NHibernate을 참조하십시오.

+0

지연로드를 비활성화하면 속성이 가상 일 필요는 없습니까? 이 경우에는 게으른 로딩 프록시가 생성되지 않고 속성에 간단하게 액세스 할 수 있기 때문입니다. 또는 나는 틀린가? (그냥 알기 위해 :) –

+0

@ Yippie-Kai-Yay : 게으른 로딩을 비활성화 한 것을 나는 알지 못했다. 너는 100 % 정확하다. – jason

0

짧은 대답 : http://wiki.fluentnhibernate.org/Auto_mapping. FluentNH에 내장 된 개체 및 기본 규칙을 사용하여 많은 사용자 지정 동작을 필요로하지 않는 개체를 매핑 할 수 있습니다.

상속을 사용하여 대부분 또는 모든 클래스에 공통 요소가있는 매핑을 정의 할 수도 있습니다. Hello는 Id, Name 및 Timestamp를 정의하는 기본 클래스입니다. 이 기본 클래스의 매핑을 정의한 다음 다른 객체의 매핑을 직접 생성하거나 공통 테이블 구조에 저장해야하는 객체에 대해 JoinedSubclass 매핑을 정의 할 수 있습니다 (대개 기본베이스의 다양한 종류이기 때문에). CheckingAccount, SavingsAccount 및 MoneyMarketAccount와 같은 클래스는 실질적으로 유사한 데이터 구조를 가진 BankAccount의 다른 유형입니다.

관련 문제