В нашем приложении application_startup мы запустили нашу базу данных с некоторыми поддельными данными, если данных не существует.
Для этого мы используем методы Async
для хранения данных. Отлично. Единственная проблема заключается в том, что мы не знаем, как это сделать в application_startup
, потому что это не метод асинхронизации.
Я потратил столько времени, пытаясь понять учебники @StevenCleary, и я всегда получаю тупики. Я полностью понимаю, что он постоянно говорит:
Как правило, вы должны использовать "async all the down"; то есть не блокировать асинхронный код
но я просто не понимаю, как это сделать, в этом случае: (
Позволяет себе представить, что это код, который я пытаюсь воспроизвести с помощью...
protected void Application_Start()
{
var someFakeData = LoadSomeFakeData();
var documentStore = new DocumentStore();
await documentStore.InitializeAsync(someFakeData);
...
// Registers this database as a singleton.
Container.Register(documentStore);
}
а затем.. некоторый код, который использует этот documentStore
. Он впрыскивается посредством инъекции конструкции...
public SomeController(IDocumentStore documentStore)
{
_documentStore = documentStore;
}
public ViewModel GetFoos()
{
using (var session = _documentStore.OpenSession())
{
... db code goes in here ...
}
}
Разъяснение
Я не пытаюсь сделать какой-то асинхронный код здесь. Я на самом деле пытаюсь вызвать этот метод async, синхронно. Конечно, я теряю преимущества async blah blah de blah.. но я доволен этим. Это запускается, и я счастлив заблокировать при запуске.