मेरी सभी संस्थाएं और मूल्य वस्तुएं मार्कर इंटरफेस 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);
});
जो मैं नहीं करना चाहता हूं उसे प्रत्येक कक्षा के लिए इन ओवरराइड मैन्युअल रूप से करना है और मूल्य वस्तु के लिए प्रत्येक संपत्ति को बार-बार लिखना है।