我在努力尋找模型1:0,1關係(「可能有一個」或「至多有一個」)的最佳方法。我相信這就是所謂的Z基數。建模一到零或一個關係(Z基數)
例如,假設我有兩個類Widget
和WidgetTest
。並非所有的Widget都經過測試,測試具有破壞性,因此每個Widget最多隻能有一個WidgetTest。還假定將WidgetTest字段添加到Widget是不合適的。
我想我的公共接口爲:
Widget
WidgetTest { get; set; }
WidgetTest
Widget { get; }
模型1:小部件有一個WidgetTest財產,並在數據庫中的窗口小部件表有唯一約束外鍵WidgetTest。我的DBA認爲這將允許WidgetTest記錄在沒有Widget的情況下存在。
WidgetTable
WidgetTestId (FK, UQ)
模型2:窗口小部件具有WidgetTest的專用集合,並執行通過添加或刪除從由公共WidgetTest屬性控制集合的單個對象的0,1的關係。數據庫使用WidgetTest將1:m模型化爲具有唯一約束外鍵的Widget。我認爲這意味着採用模型來適應數據庫模式(即爲我工作更多)。
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 :?由PK-PK強制執行。映射,相當直線前方。 – 2010-02-08 14:33:02