Я новичок в использовании RavenDB. Я понимаю, что мы должны сначала создать DocumentStore, а затем открыть сеанс, чтобы сохранить данные в базе данных. Из документации я понимаю, что мы не должны создавать экземпляр каждый раз и должны использовать singleton для создания DocumentStore. Но я понял, что большая часть документации или учебников только демонстрационно создает экземпляр каждый раз.RavenDB singleton DocumentStore
FYI, Я использую ASP.NET MVC framework.
Так вот идет мой вопрос,
- В какой папке должны CreatingDocumentStore.cs (Singleton класс) быть помещен ? В корне папки приложения?
- После создания этого одноэлементного класса, как его использовать?
Ниже приведен оригинальный код моего AdminController перед использованием Singleton. И я не знаю, как изменить его, чтобы использовать класс singleton - CreateDocumentStore.cs
Я был бы очень признателен, если кто-то сможет продемонстрировать использование Singleton, показывая код. Заранее спасибо!
AdminController.cs в папке Controller
public class AdminController : Controller
{
public ActionResult Index()
{
using (var store = new DocumentStore
{
Url = "http://localhost:8080/",
DefaultDatabase = "foodfurydb"
})
{
store.Initialize();
using (var session = store.OpenSession())
{
session.Store(new Restaurant
{
RestaurantName = "Boxer Republic",
ResCuisine = "Western",
ResAddress = "Test Address",
ResCity = "TestCity",
ResState = "TestState",
ResPostcode = 82910,
ResPhone = "02-28937481"
});
session.SaveChanges();
}
}
return View();
}
public ActionResult AddRestaurant()
{
return View();
}
}
CreatingDocumentStore.cs в корневой папке
public class CreatingDocumentStore
{
public CreatingDocumentStore()
{
#region document_store_creation
using (IDocumentStore store = new DocumentStore()
{
Url = "http://localhost:8080"
}.Initialize())
{
}
#endregion
}
#region document_store_holder
public class DocumentStoreHolder
{
private static Lazy<IDocumentStore> store = new Lazy<IDocumentStore>(CreateStore);
public static IDocumentStore Store
{
get { return store.Value; }
}
private static IDocumentStore CreateStore()
{
IDocumentStore store = new DocumentStore()
{
Url = "http://localhost:8080",
DefaultDatabase = "foodfurydb"
}.Initialize();
return store;
}
}
#endregion
}
Что вы точно хотите достичь, добавив, что 'с помощью 'блок в' Creati ngDocumentStore'? Он немедленно удалит ваш магазин, так как управление оставляет конструктор. –