Как мне вызвать SQLitePCL.Batteries.Init().?C#

Место общения программистов C#
Ответить
Anonymous
 Как мне вызвать SQLitePCL.Batteries.Init().?

Сообщение Anonymous »

Я пытаюсь создать базу данных 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 Accounts { get; set; }
}
Может ли кто-нибудь пролить свет на эту проблему? Я установил одни и те же пакеты Nuget в оба проекта. Единственная разница между ними — это источник данных и классы POCO, которые я использовал для базы данных.

Спасибо.

Изменить
Моя программа в настоящее время состоит из консольного приложения, которое ссылается на библиотеку классов .Net Framework. Консольное приложение имеет конструктор, который выглядит следующим образом:

Код: Выделить всё

public Program()
{
using (var db = new FinancialContext())
{
db.Accounts.Add(new Account() { AccountName = "RBS", AccountBalance=20 });
}
}
Библиотека классов имеет следующий финансовый контекст:

Код: Выделить всё

public class FinancialContext : DbContext
{
public DbSet Accounts { get; set; }

public FinancialContext()
{
# Database.EnsureDeleted();
Database.EnsureCreated();
}

protected override void OnConfiguring(DbContextOptionsBuilder optionbuilder)
{
optionbuilder.UseSqlite(@"Data Source="Some Source Folder"\Database.db");
}
}
Ошибка выше отображается в точке символа #. Есть ли проблема в том, как я пишу код? Мне бы очень хотелось знать, в чем проблема, чтобы я мог исправить ее правильно, а не применять «исправление». Также я попробовал предложение в комментариях, но размещение строки кода SQLitePCL.raw.SetProvider(new SQLitePCL.SQLite3Provider_e_sqlite3()); в консольном приложении привело к ошибке. SQLitePCL не является в текущем контексте, что заставляет меня думать, что я упускаю ссылку?

Подробнее здесь: https://stackoverflow.com/questions/507 ... eries-init
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»