时间:2010-07-26 15:58:10

标签: c# nhibernate fluent-nhibernate

1 个答案:

答案 0 :(得分:1)

这可能取决于你想要你的poco课程的行为方式。 首先,如果加载空值,您是否希望重新保存空值,或者是否希望任何会话提交/刷新使用空字段的新默认值更新记录。 如果你想在数据库中保留空值,你将如何从你的poco对象中检测到只有一个布尔值,以保存IE布尔值只有true和false选项/值,但你的位类的选项/值为null,0和1?

如果说:你想在你的poco类中将你的可空位作为布尔值而不是可空的布尔数据表,并让类更新数据库以删除所有空值,那么一个解决方案很快就不会深入到自定义类型是有两个属性可以为nullable和protected或内部和一个属性在接口(没有任何映射)与基本逻辑 - 由于依赖注入的原因所有poco类理想情况下将有一个或两个接口: EG

internal virtual bool? isActive {get;set;}
public bool MyInterface.IsActive 
{
    get{ return isActive ?? false; }
    set{ isActive == value ?? false; };
}

这种方式你的逻辑包含在代码中,所以如果规则变得更加复杂/复杂,或者一个可空位的默认值为false,而另一个默认值为true(因为上个世纪的一些疯狂的开发人员)你可以更容易控制转变。 它需要你使用接口而不是真正的poco类,但这也不是坏事,它只取决于你的开发模型。