में महत्वपूर्ण स्तंभ को निर्दिष्ट मान लें मैं निम्नलिखित दो वर्गों है:बचें डबल जुड़ा हुआ परिदृश्य
public class User : Entity
{
public virtual IList<Item> Items { get; set; }
}
public class Item : Entity
{
public virtual User Owner { get; set; }
}
मैं दो मानचित्रण कक्षाओं बनाया:
public class UserMap : ClassMap<User>
{
public UserMap()
{
Id(x => x.Id);
HasMany(x => x.Items);
}
}
public class ItemMap : ClassMap<Item>
{
public ItemMap()
{
Id(x => x.Id);
References(x => x.Owner);
}
}
यह एक मेज Item
एक स्तंभ है कि में परिणाम होगा UserId
और एक कॉलम OwnerId
। जब मैं मैपिंग पर KeyColumn("OwnerId")
का उपयोग करता हूं, तो यह केवल OwnerId
कॉलम के साथ काम करता है, लेकिन मैं इससे बचना चाहता हूं। क्या ItemMap
में मैपिंग द्वारा बनाए गए कॉलम का उपयोग करने के लिए एनएचबीर्नेट को बताने का कोई तरीका है?
मैं कॉलम को स्पष्ट रूप से निर्दिष्ट करने से बचना क्यों चाहता हूं:
कॉलम का नाम OwnerId
स्वचालित रूप से संपत्ति के नाम और कुछ नियमों के आधार पर जेनरेट किया जा रहा है। अगर मैं नियम या संपत्ति का नाम बदलता हूं, तो मुझे KeyColumn
को भी बदलना याद रखना होगा। तो, मूल रूप से, यह सहेजने के लिए refactoring नहीं है।
क्या आप संपत्ति का नाम उपयोगकर्ता को बदल सकते हैं? सार्वजनिक वर्चुअल उपयोगकर्ता उपयोगकर्ता {प्राप्त करें; सेट; }। आपको –
@ColeW के भी अपने संदर्भ मैपिंग को बदलना होगा: ठीक है, उपयोगकर्ता को संपत्ति को बदलना स्पष्ट रूप से ठीक होगा, लेकिन संपत्ति के नाम की तुलना में अब उतना अच्छा नहीं होगा जितना अब है। –
मैं सहमत हूं लेकिन मुझे नहीं लगता कि आप जो कुछ भी पूछ रहे हैं उसे करने का एक साफ तरीका है। –