2015-01-09 77 views
4

我有一些C#類的字段,其中一些是空的。那些是空的,我不想被插入到與空值的數據庫。我不希望它們插入到數據庫中。 我該如何做到這一點?不要插入字段,如果爲空或空

class User 
{ 
    public string FirstName; 
    public string LastName; 
    public string MidName; 
} 

並不是每個用戶都有一個MidName,但是Mongo在MidName字段中插入了帶有null值的db。

回答

4

確保您註冊新的約定包夠早。如果在註冊新的約定包之前已經映射了任何類,它們將不會被更新。

這裏是我的測試代碼:

public class C 
{ 
    public int Id { get; set; } 
    public string S { get; set; } 
} 

public static class Program 
{ 
    public static void Main(string[] args) 
    { 
     ConventionRegistry.Register(
      "Ignore null values", 
      new ConventionPack 
      { 
       new IgnoreIfNullConvention(true) 
      }, 
      t => true); 

     var client = new MongoClient("mongodb://localhost"); 
     var server = client.GetServer(); 
     var database = server.GetDatabase("test"); 
     var collection = database.GetCollection<C>("test"); 

     collection.Drop(); 
     collection.Insert(new C { Id = 1, S = null }); 

     Console.WriteLine("Press Enter to continue."); 
     Console.ReadLine(); 
    } 
} 

以下文件插入到數據庫:

db.test.find()

{ "_id" : 1 } 

來源:https://groups.google.com/forum/#!topic/mongodb-user/7-NFXBNeEXs