6
모든 엔티티 및 값 객체는 마커 인터페이스 IEntity
및 IValueObject
을 구현합니다. 그래서 같은 구성 요소로 취급하도록 설정 한 :Fluent NHibernate를 사용하여 컴포넌트 콜렉션을 자동화하는 방법은 무엇입니까?
public override bool IsComponent(Type type)
{
return typeof(IValueObject).IsAssignableFrom(type);
}
public override bool ShouldMap(Type type)
{
return typeof(IEntity).IsAssignableFrom(type) || typeof(IValueObject).IsAssignableFrom(type);
}
불행하게도,이 값 객체의 컬렉션이 구성 요소 컬렉션으로 automapped해야 할 기관을 허용하지 않는 것 같습니다. 예를 들어 :
public class MyEntity : IEntity
{
public IList<MyValueObject> Objects { get; set; }
}
public class MyValueObject : IValueObject
{
public string Name { get; set; }
public string Value { get; set; }
}
어떤 시각을
IEntity
이
IValueObject
를 구현하는 유형의
IList
을 갖도록,하는 규칙을 정의 할 수있는 방법이 있나요, 그것은 내가 지정된 것처럼 매핑됩니다 :
HasMany(x => x.Objects)
.Component(x => {
x.Map(m => m.Name);
x.Map(m => m.Value);
});
내가 싫어하는 것은 모든 클래스에 대해 이러한 재정의를 수동으로 수행하고 값 객체의 각 속성을 반복해서 작성해야한다는 것입니다.