1

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

4

2 回答 2

3

使用 Sql Server 时可以使用DBNull.Value设置空值。对于实体框架,我认为如果值为空,它会在数据库中将其设置为空。

你可以稍微缩短你的代码。

NewObject newobject = new NewObject 
                     {
                         _field1 = (field1=="") ? null : field1,
                         _field2 = (field2=="") ? null : field2,
                         _field3 = (field3=="") ? null : field3
                      };
myDBContext.NewObjects.Add(newobject);
myDBContext.SaveChanges();
于 2012-12-24T09:17:51.120 回答
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();
于 2012-12-24T09:36:24.067 回答