2013-02-12 38 views
1

当试图通过使用下面的代码我的成绩越来越空与MongoDB的更新:如果你不使用C#的驱动程序的新连接的风格在C#WriteConcernResult结果无效的MongoDB

public bool UpdateContact(string id, Contact item)  
{ 
    IMongoQuery query = Query.EQ("_id", id); 
    item.LastModified = DateTime.UtcNow; 
    IMongoUpdate update = Update 
     .Set("Email", item.Email) 
     .Set("LastModified", DateTime.UtcNow) 
     .Set("Name", item.Name) 
     .Set("Phone", item.Phone); 
    WriteConcernResult result = _contacts.Update(query, update); 
    return result.UpdatedExisting; 
} 
+0

你能告诉我们这是什么语言吗?看起来像大约4 atm – Sammaye 2013-02-12 13:47:51

+1

(看起来像C#给我) – WiredPrairie 2013-02-12 14:44:22

回答

2

(可能其他驱动程序),您的连接可能配置为不具有WriteConcern by default

如果没有WriteConcern配置,C#的API会返回一个null作为结果为您提供的代码(见Update获取更多信息)

例如,如果你的连接是这样的:

var connectionString = "mongodb://localhost"; 
var server = MongoServer.Create(connectionString); // deprecated 
var database = server.GetDatabase("test"); // WriteConcern defaulted to Unacknowledged 

这将被配置为无写入问题。

您应该使用这种风格(如C#1.7驱动程序):

var connectionString = "mongodb://localhost"; 
var client = new MongoClient(connectionString); 
var server = client.GetServer(); 
var database = server.GetDatabase("test"); // WriteConcern defaulted to Acknowledged 

不同的是,你需要使用MongoClient类(并获得MongoServerMongoDatabase从对象实例) 。