에 적용, 그리고 동급 이상의 각 테이블에 대해 약간 다른 이름을 가질 필요가되지 않습니다 (대신 밑줄 파스칼 케이스). 이것은 규칙을 사용하는 명백한 장소처럼 보입니다. 나는 또한 sub-per-subclass 전략을 사용하고 싶지만 그 조합은 나에게 문제를 일으키고있는 것처럼 보입니다. 규칙은 계층 구조의 기본 클래스에만 적용됩니다. 실제로유창함 NHibernate에 자동 매핑 클래스 규칙은 전체 클래스 계층
abstract class BaseRule -> Base_Rule
class NumberRule : BaseRule -> Number_Rule
class PatternStringRule : BaseRule -> Pattern_String_Rule
받고 있어요 무엇 :
BaseRule -> Base_Rule
NumberRule -> NumberRule
PatternStringRule -> PatternStringRule
-
내 클래스 매핑 방법을
AutoMap
.AssemblyOf<BaseRule>()
.IncludeBase<BaseRule>() // "BaseRule" is an abstract class
.Conventions.Add(DefaultCascade.All())
.Conventions.Add<OracleTableNameConvention>()
(> 테이블 이름 클래스 이름) : 여기
내 자동 매핑입니다보시다시피 기본 클래스 만 실제로 변경됩니다. 여기에 기존 규칙은 당신이 내가 그것을 정의하고있어 방법을 볼 수 있습니다 만, 그래서이다 (나는 또한 ISubclassConvention
인터페이스로 검토 한
public class OracleTableNameConvention : IClassConvention
{
public void Apply(IClassInstance instance)
{
string fixedName = instance.EntityType.Name.ToUnderscoredNaming();
instance.Table(fixedName);
}
}
, 테이블의 이름을 조정하기 위해 거기에 방법을 볼 수있는 충분한 의미가있다, 하위 클래스는 항상 자신의 테이블에있는 것은 아니다). 내 자동 매핑에서 IncludeBase
라인을 삭제하면
각 이름에 우선 적용을 추가 할 수 있습니다. 필요한 경우 제공 하겠지만 차라리 사용하지 않을 것입니다. 그것은
이 같은은 분명히 지원 행동해야한다 보인다. table-per-concrete-class를 사용하지 않고 계층 구조의 각 테이블에 명명 규칙을 적용하려면 어떻게해야합니까?