如果输入文本为空,如何将NULL插入DB

时间:2012-12-24 09:09:47

标签: asp.net asp.net-mvc entity-framework

我正在尝试使用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))?

2 个答案:

答案 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();
相关问题