我有一些C#類的字段,其中一些是空的。那些是空的,我不想被插入到與空值的數據庫。我不希望它們插入到數據庫中。 我該如何做到這一點?不要插入字段,如果爲空或空
class User
{
public string FirstName;
public string LastName;
public string MidName;
}
並不是每個用戶都有一個MidName,但是Mongo在MidName字段中插入了帶有null值的db。
我有一些C#類的字段,其中一些是空的。那些是空的,我不想被插入到與空值的數據庫。我不希望它們插入到數據庫中。 我該如何做到這一點?不要插入字段,如果爲空或空
class User
{
public string FirstName;
public string LastName;
public string MidName;
}
並不是每個用戶都有一個MidName,但是Mongo在MidName字段中插入了帶有null值的db。
使用適當命名的[BsonIgnoreIfNull]
attribute:
class User
{
public string FirstName;
public string LastName;
[BsonIgnoreIfNull]
public string MidName;
}
確保您註冊新的約定包夠早。如果在註冊新的約定包之前已經映射了任何類,它們將不會被更新。
這裏是我的測試代碼:
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