Развернутая база данных SQLite пуста после развертывания универсального приложения - PullRequest
0 голосов
/ 16 января 2019

Я использую в базе данных SQLite в UWP. Он имеет несколько таблиц и находится в папке «Ресурсы», а действие построения помечено как «Содержимое».

На стадии разработки машина работает нормально. Но после развертывания на планшет MS Windows 10 появляется ошибка

Ошибка SQLite 1 нет такой таблицы Компании

Соответствует коду

using (MobileContext db = new MobileContext())
{
   companiesList.ItemsSource = db.Companies.ToList();
   ...
}

var madeResult = Database.EnsureCreated (); // Это дает ложь так

Я предполагаю, что на основании https://docs.microsoft.com/en-us/dotnet/api/microsoft.entityframeworkcore.infrastructure.databasefacade.ensurecreated?view=efcore-2.1 база данных существует.

Я пытался

optionsBuilder.UseSqlite("Data Source=" + ApplicationData.Current.LocalFolder.Path + @"\Mobile.db");

optionsBuilder.UseSqlite("Data Source=Mobile.db");

Любой народ подсказок? Спасибо!

P.S. Я использую Microsoft.EntityFrameworkCore для доступа к SQLite.

P.S. # 2 Я пробовал это решение https://social.msdn.microsoft.com/Forums/en-US/1a933b13-09ee-46ec-9045-e2f567b6048c/uwp-sqlite-error-1-no-such-table-name-table?forum=wpdevelop, но оно не работает.

1 Ответ

0 голосов
/ 17 января 2019

Получено из официального документа ,

Строки подключения в приложении UWP, как правило, представляют собой соединение SQLite, которое просто задает локальное имя файла . Как правило, они не содержат конфиденциальной информации и не требуют изменений при развертывании приложения. Таким образом, эти строки соединения обычно хорошо оставить в коде, как показано ниже. Если вы хотите удалить их из кода, тогда UWP поддерживает концепцию настроек

public class BloggingContext : DbContext
{
    public DbSet<Blog> Blogs { get; set; }
    public DbSet<Post> Posts { get; set; }

    protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
    {
            optionsBuilder.UseSqlite("Data Source=blogging.db");
    }
}

И путь по умолчанию для файла базы данных - это приложение LocalFolder. Похоже, это C:\Users\vxx\AppData\Local\Packages\e045f456-27d9-4966-b639-01e2281b249f_7jxxxxxxxxxx\LocalState. Если ваша конфигурация такая же, как указано выше, при развертывании на новом компьютере содержимое файла базы данных будет пустым.

Обновление OP

Я только что прокомментировал некоторые украшения класса, такие как [Table("Companies")] и [Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)], и теперь это работает!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...