Tüm varlıklarım ve değer nesneleri, IEntity
işaretleme arabirimlerini ve IValueObject
numaralarını uygular. Öyle gibi bileşenler olarak muamele etmelerini kurdunuz:Fluent NHibernate ile bileşenlerin bir koleksiyonu nasıl otomatik olarak oluşturulur?
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);
}
Maalesef bu değer nesnelerin koleksiyonları bileşeni koleksiyonları olarak automapped gereken kuruluşlara izin vermiyor. Örneğin:
public class MyEntity : IEntity
{
public IList<MyValueObject> Objects { get; set; }
}
public class MyValueObject : IValueObject
{
public string Name { get; set; }
public string Value { get; set; }
}
her zaman bir
IEntity
IValueObject
uygulayan bir tipte bir
IList
sahip olacak şekilde, bir kongre tanımlamak için herhangi bir şekilde var, ı belirtilen sanki eşleştirilmiş alır:
HasMany(x => x.Objects)
.Component(x => {
x.Map(m => m.Name);
x.Map(m => m.Value);
});
Yapmak istemediğim, her sınıf için bu geçersiz kılmaları elle yapmak ve her bir özelliği tekrar ve tekrar değer nesnesine yazmak zorundadır.