我将 NHibernate 3 与 Microsoft SQL Server 数据库(2005 及更高版本)一起使用。现在,我正在寻找一种方法来告诉 NHibernate 始终将 NULL 写入数据库而不是空字符串。最好的方法是什么?- 或者 NHibernate 中是否有一个开关可以做到这一点?谢谢你的帮助。
问问题
1348 次
1 回答
0
您可以添加 PreInsertEventListener 并覆盖该函数以将空字符串转换为 NULL 值。
解决这个问题的方法是:
public class NhibernateEventListeners : IPreInsertEventListener
{
public bool OnPreInsert(PreInsertEvent nHibernateEvent)
{
var entityBeingInserted = nHibernateEvent.Entity;
if (entityBeingInserted == null)
return false;
if (property.PropertyType==typeof(string))
{
//use reflection to set the property value to null
}
return false;
}
}
并在设置 sessionfactory 时确保将以下内容添加到配置中
_config.ExposeConfiguration(
config => config.SetListener(ListenerType.PreInsert, new NhibernateEventListeners()));
希望这是您正在寻找的并可以帮助您。
于 2012-03-22T14:13:52.127 回答