2015-04-13 18 views
5

Sunucuya bağlanmayı ve veritabanı almayı deniyorum. Düzgün çalıştırmak ama bana bir uyarı göstermek VS2013:MongoDB get server

Uyarı 1 'MongoDB.Driver.MongoClientExtensions.GetServer (MongoDB.Driver.MongoClient)' artık kullanılmıyor: 'yerine yeni bir API kullanın.

 string connectionString = "mongodb://localhost:27017"; 
     MongoClientSettings settings = MongoClientSettings.FromUrl(new MongoUrl(connectionString)); 
     MongoClient mongoClient = new MongoClient(settings); 
     var server = mongoClient.GetServer(); 
     var db = server.GetDatabase("bookstore"); 
     var bookCollection = db.GetCollection<Book>("Book"); 

birisi bana bu çözmek yardımcı olabilir misiniz? Okumak için Tks.

cevap

11

MongoServer sınıfı, 2.0.0 sürümünde kullanımdan kaldırılmıştır (bkz. here). Sen MongoClient nesne üzerinde doğrudan GetDatabase() çağırabilirsiniz:

MongoClient mongoClient = new MongoClient(settings); 
var db = mongoClient.GetDatabase("bookstore"); 

Daha belgelerine reference documentation bulunabilir, vb MongoDB sunucuya bağlanırken bir veritabanı alma hakkında.

+0

Ben denedim, ama Müşteriden Getdatabase() çağırdığınızda:

// Get your connection string -- use the URL format as in example below: // name="MongoConnectionStr" connectionString="mongodb://localhost/bookstore" var connectionString = ConfigurationManager.ConnectionStrings["MongoConnectionStr"].ConnectionString; var mongoUrl = MongoUrl.Create(connectionString); var client = new MongoClient(connectionString); // Use the Mongo URL to avoid hard-coding the database name. var db = new MongoClient(mongoUrl).GetDatabase(mongoUrl.DatabaseName); // books below is an IMongoCollection var books = db.GetCollection<Book>("Books"); 
Hana

+0

@Hana Üzgünüz, daha fazla yardımcı olmak ister, ancak bir Windows makinesine erişiminiz yok. –

+0

'mongoClient.GetDatabase' işlevini kullanarak bana" MongoClient GetDatabase için bir tanım içermiyor "diyen bir hata veriyor. Peki, veritabanını ismiyle elde etmek için alternatif çözüm nedir? – Rai

1

@Robby'den örnek kod çalışır, ancak kodunuzun beklediği şeyi döndürmez; Arabirim nesnelerini döndürür. C# sürücüsü, Interface yöntemlerinin yanı sıra bir dizi eşzamansız işlevi kullanacak şekilde güncellendi, bu nedenle kodunuzu güncellemek muhtemelen iyi bir fikirdir.

Veritabanının yeni bir yolu, artık bir veritabanı almıyorsunuz. Veritabanına bir arabirim olan bir IMongoDatabase olsun. Ayrıca, bir IMongoDatabase elde ettiğinizde MongoCollection s ile çalışmamalısınız (MongoDatabase nesnesinden), bir IMongoCollection ile çalışacaksınız. Yeniden düzenleme? Emin ol! Ama buna değer.

Ayrıca, varsayılan veritabanınızı Mongo URL ile biçimlendirilmiş bağlantı dizelerine koymanızı da öneririm. Bu şekilde, veritabanı adı gibi kodlanmış sabitleri kodunuzun dışında tutabilirsiniz.

var mongoUrl = new MongoUrl(connectionString); 
var mongoClient = new MongoClient(mongoUrl); 
MongoServer server = new MongoServer(MongoServerSettings.FromClientSettings(mongoClient.Settings)); 
0

aşağıdaki için kodumu değiştirdi. bookCollection.Save (kitap) işe yaramadı. BookCollection.InsertOneAsync (kitap) çalıştırmayı denedim; Hiçbirşey değişmedi. Bana açıklayabilir misin? Yardımlarınız için çok teşekkürler.
+0

Bu nasıl yardımcı olur? –