2012-12-24 66 views
1

我試圖通過AJAX(POST)將HTML表單傳遞給服務器。該表單包含多個文本框。如果這些字段爲空,則控制器將接收像field1 =「」,field2 =「」,field3 =「」的值。然後我嘗試值這樣增加(使用的EntityFramework 4.1)數據庫:如何將NULL插入數據庫,如果輸入文字爲空

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)的)?

回答

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(); 
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();