Tôi rất mới với MongoDB và NoSQL nói chung và tôi vừa bắt đầu xây dựng một trang web với MongoDB/Norm/ASP.NET MVC 3.Khi nào tôi nên mở và đóng các kết nối MongoDB?
Tôi tự hỏi làm cách nào tôi nên dò tìm kết nối đến cơ sở dữ liệu Mongo của mình .
Ngay bây giờ tôi có một Basecontroller instanciates MongoSession và onActionExecuted tôi vứt bỏ nó để tất cả các bộ điều khiển derived của tôi sẽ có quyền truy cập vào MongoSession của tôi. Lớp MongoSession mở một kết nối trong hàm khởi tạo của nó và hủy bỏ nó trên Dispose(), cách nó đang làm việc ngày hôm nay.
private IMongo _mongo;
public MongoSession()
{
_mongo = Mongo.Create("connString");
}
public void Dispose()
{
_mongo.Dispose();
}
Tôi hơi lo lắng rằng có thể đang giữ kết nối mở quá lâu nếu tôi đang làm các công cụ khác trong bộ điều khiển.
Cách tiếp cận đó có đủ để không mạo hiểm khi giữ quá nhiều kết nối mở hay tôi nên làm điều gì đó giống như phương pháp ví dụ bên dưới?
public void Add<T>(T item) where T : class, new()
{
using (var mongo = Mongo.Create("connString"))
{
mongo.GetCollection<T>().Insert(item);
}
}
Một theo dõi câu hỏi là:
đang mở và đóng kết nối MongoDB qua Norm hoạt động "đắt tiền"?
Norm được hầu như không được duy trì nữa, nếu bạn muốn hỗ trợ LINQ đi với tài xế Mongo chính thức với FluentMongo trên đầu trang của nó. –
Bên cạnh câu hỏi này về việc mở và đóng các kết nối trên mã, tôi đã gặp sự cố với kết nối nhà cung cấp dịch vụ internet, sau đó mã của tôi có EndOfStreamException. Tôi đã giải quyết nó bằng cách sử dụng settings.MaxConnectionIdleTime = TimeSpan.FromSeconds (30); https://stackoverflow.com/a/44606284/194717 – Tony