我正在尝试使用AJAX(POST)将HTML表单传递给服务器。该表单包含多个文本字段。如果这些字段为空,则控制器接收诸如field1 =“”,field2 =“”,field3 =“”之类的值。然后我尝试向数据库添加值(使用EntityFramework 4.1),如下所示:
NewObject newobject = new NewObject { _field1 = field1, _field2 = field2, _field3 = field3};
myDBContext.NewObjects.Add(newobject);
myDBContext.SaveChanges();
我如何才能将空字符串存储为数据库中的NULL
?
唯一想到的是:
f1 = (field1!= "") ? field1 : null;
f2 = (field2!= "") ? field2 : null;
f3 = (field3!= "") ? field3 : null;
NewObject newobject = new NewObject { _field1 = f1, _field2 = f2, _field3 = f3};
myDBContext.NewObjects.Add(newobject);
myDBContext.SaveChanges();
是否有更好的解决方案(在任何级别(EntityFramework,使用数据注释,Sql Server))?
答案 0 :(得分:3)
使用Sql Server时,可以使用DBNull.Value
设置空值。并且使用Entity Framework我认为如果值为null,它会在db中将其设置为null。
您可以稍微缩短代码。
NewObject newobject = new NewObject
{
_field1 = (field1=="") ? null : field1,
_field2 = (field2=="") ? null : field2,
_field3 = (field3=="") ? null : field3
};
myDBContext.NewObjects.Add(newobject);
myDBContext.SaveChanges();
答案 1 :(得分:0)
您可以创建扩展方法。
public static class StringExtensions {
public static string NullIfEmpty(this string text) {
return string.IsNullOrEmpty(text)? null : text;
}
}
然后只需调用方法
NewObject newobject = new NewObject
{
_field1 = field1.NullIfEmpty(),
_field2 = field2.NullIfEmpty(),
_field3 = field3.NullIfEmpty()
};
myDBContext.NewObjects.Add(newobject);
myDBContext.SaveChanges();