Comments 2
Если говорить о lock, то ,наверно, лучше будет не блокировать при каждом обращении, а только при первом создании.
var filenameDb = Path.Combine(FileSystem.AppDataDirectory, "app.db3");
if (!File.Exists(filenameDb))
{
lock (_lockDb)
{
if (!File.Exists(filenameDb))
{
using var stream = FileSystem.OpenAppPackageFileAsync("ML/app.db3").GetAwaiter().GetResult();
using (var memoryStream = new MemoryStream())
{
stream.CopyTo(memoryStream);
File.WriteAllBytes(filenameDb, memoryStream.ToArray());
}
}
}
}
return new LocalDatabase(filenameDb);
В моем коде не "при каждом обращении", а "при каждом создании инстанса". И вы верно подметили, казалось бы, да, зачем, можно локать лишь при первом создании, но тут уже дую на воду после битвы с рандомными пропажами (не сохранениями) данных на рилизе, а это на практике помогло.
Sign up to leave a comment.
Entity Framework c предустановленной БД в вашем приложении на .NET MAUI