मैं 1: 0,1 रिश्तों को मॉडल करने का सबसे अच्छा तरीका खोजने के लिए संघर्ष कर रहा हूं ("एक हो सकता है" या "सबसे अधिक है")। मुझे विश्वास है कि इसे जेड कार्डिनालिटी कहा जाता है।एक से शून्य या एक रिश्तों को मॉडलिंग (जेड कार्डिनालिटी)
उदाहरण के लिए, मान लें कि मेरे पास दो वर्ग Widget
और WidgetTest
हैं। सभी विजेट्स का परीक्षण नहीं किया जाता है और परीक्षण विनाशकारी है इसलिए प्रति विजेट सबसे अधिक विजेटटेस्ट पर हो सकता है। यह भी मान लें कि विजेट में विजेटटेस्ट फ़ील्ड जोड़ने के लिए अनुचित है।
मैं चाहते हैं होने के लिए मेरी सार्वजनिक इंटरफ़ेस:
Widget
WidgetTest { get; set; }
WidgetTest
Widget { get; }
मॉडल 1: विजेट एक WidgetTest संपत्ति है और डेटाबेस में विजेट तालिका WidgetTest करने के लिए एक विशिष्ट विवश विदेशी कुंजी है। मेरा डीबीए तर्क देता है कि यह विजेट के बिना विजेटटेस्ट रिकॉर्ड मौजूद होने की अनुमति देगा।
WidgetTable
WidgetTestId (FK, UQ)
मॉडल 2: विजेट WidgetTest की एक निजी संग्रह है और जोड़ने या संग्रह के लिए एक सार्वजनिक WidgetTest संपत्ति के द्वारा नियंत्रित से एक वस्तु को हटाने के द्वारा 0,1 संबंध लागू करता है। डेटाबेस मॉडल 1: एम के साथ विजेटटेस्ट के साथ विजेट के लिए एक विशिष्ट रूप से बाधित विदेशी कुंजी है। मैं तर्क देता हूं कि इसका मतलब डेटाबेस स्कीमा फिट करने के लिए मॉडल को अपनाना है (यानी मेरे लिए और अधिक काम)।
WidgetTestTable
WidgetId (FK, UQ)
कौन सा मॉडल बेहतर है? NHibernate के साथ हासिल करना आसान है? या क्या कोई तीसरा तरीका है?
संपादित करें ... यहाँ है कि मैं क्या साथ समाप्त हो गया है:
public class Widget
{
// This is mapped in NH using a access strategy
private IList<WidgetTest> _widgetTests = new List<WidgetTest>(1);
public WidgetTest
{
get { return _widgetTests.FirstOrDefault(); }
set
{
_widgetTests.Clear();
if (value != null)
{
_widgetTests.Add(value);
}
}
}
}
क्या एक 1 के साथ गलत :? पीके-पीके द्वारा लागू मैपिंग जो काफी सीधे आगे .. –