Я пытаюсь создать базу данных SQLite для своего приложения и столкнулся с этой ошибкой.
System.Exception: 'Вам необходимо вызвать SQLitePCL.raw.SetProvider ().Если вы используете пакетный пакет, это делается путем вызова SQLitePCL.Batteries.Init (). '
Я создал простое консольное приложение, которое запускает точно такой же код для создания, без проблем.Код выглядит следующим образом!
using (var dataContext = new SampleDBContext())
{
dataContext.Accounts.Add(new Account() { AccountName = name, AccountBalance = balance });
}
public class SampleDBContext : DbContext
{
private static bool _created = false;
public SampleDBContext()
{
if (!_created)
{
_created = true;
Database.EnsureDeleted();
Database.EnsureCreated();
}
}
protected override void OnConfiguring(DbContextOptionsBuilder optionbuilder)
{
optionbuilder.UseSqlite(@"Data Source="Source folder"\Database.db");
}
public DbSet<Account> Accounts { get; set; }
}
Может кто-нибудь пролить свет на проблему?Я установил одинаковые пакеты Nuget в обоих проектах, единственное различие между ними заключается в источнике данных и классах POCO, которые я использовал для базы данных.
Спасибо.
Редактировать Моя программа в настоящее время состоит из Console application
, который ссылается на .Net Framework Class Library
.У Console application
simple есть конструктор, который выглядит следующим образом:
public Program()
{
using (var db = new FinancialContext())
{
db.Accounts.Add(new Account() { AccountName = "RBS", AccountBalance=20 });
}
}
В библиотеке классов есть следующий FinancialContext:
public class FinancialContext : DbContext
{
public DbSet<Account> Accounts { get; set; }
public FinancialContext()
{
# Database.EnsureDeleted();
Database.EnsureCreated();
}
protected override void OnConfiguring(DbContextOptionsBuilder optionbuilder)
{
optionbuilder.UseSqlite(@"Data Source="Some Source Folder"\Database.db");
}
}
Ошибка Above отображается в точке символа #, есть проблема с тем, как я кодирую?Мне бы очень хотелось знать, в чем проблема, чтобы я мог исправить ее, а не применять «исправление».Также я попробовал предложение в комментариях, но помещение строки кода SQLitePCL.raw.SetProvider(new SQLitePCL.SQLite3Provider_e_sqlite3());
в Console Application
дало ошибку SQLitePCL
не в текущем контексте, что заставляет меня думать, что я пропускаю ссылку?