当保存具有尚未显式设置为空字符串的字符串属性的对象时,LINQ to SQL将尝试使用NULL值插入此记录。
我会同意这是它应该如何运作的。但是对于我写的特定数据库,我想全局覆盖此功能以始终保存空字符串。
这可能吗?
答案 0 :(得分:4)
你需要这样的东西:
public partial class NorthwindDataContext
{
public override void SubmitChanges(ConflictMode failureMode)
{
this.EmptyNullProperties();
base.SubmitChanges(failureMode);
}
private void EmptyNullProperties()
{
var propertiesToEmpty =
from entity in this.GetChangeSet().Inserts
from property in entity.GetType().GetProperties()
where property.CanRead && property.CanWrite
where property.PropertyType == typeof(string)
where property.GetValue(entity) == null
select new { entity, property };
foreach (var pair in propertiesToEmpty)
{
pair.property.SetValue(pair.entity, string.Empty);
}
}
}