我在努力寻找模型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