我将NHibernate 3与Microsoft SQL Server数据库(2005及更高版本)一起使用。 现在,我正在寻找一种方法告诉NHibernate将NULL始终写入数据库而不是空字符串。 最好的方法是什么? - 或者NHibernate中是否有转换来执行此操作? 谢谢你的帮助。
答案 0 :(得分: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()));
希望这是你正在寻找并帮助你的。