Я не могу настроить рабочую строку подключения ODBC для SQLite в файле aspsettings.json для .NET CORE Razor Pages - PullRequest
0 голосов
/ 01 апреля 2019

У меня есть проект Visual Studio 2017 .NET 2.2 Core Razor Pages, который я скачал и установил драйвер ODBC sqlite3.Я вижу свою базу данных sqlite в Visual Studio Server Explorer, и я могу открывать таблицы и видеть строки.Но я не могу создать строку подключения, которая работает.

Я получаю сообщение об ошибке при нажатии на ссылку на страницу, которую я хочу отобразить: «Таблица курсов не найдена».Ошибка происходит в пространстве имен OnGetAsync:

OESAC.Pages.Courses {открытый класс IndexModel: PageModel {частный доступ только для чтения OESAC.Data.MyDbContext _context;

public IndexModel(OESAC.Data.MyDbContext context)
{
    _context = context;
}

public IList<CoursesViewModel> CoursesVM { get;set; }

public async Task OnGetAsync()
{
    //CoursesVM = await _context.Courses.ToListAsync();
    CoursesVM = await _context.Courses
        .Select(p => new CoursesViewModel
        {
            OESACID = p.OESACID,
            CourseTitle = p.CourseTitle,
            Instructor = p.Instructor,
            Locations = p.Locations,

Microsoft.Data.Sqlite.SqliteException (0x80004005): ошибка SQLite 1: «нет такой таблицы: курсы».в Microsoft.Data.Sqlite.SqliteException.ThrowExceptionForRC (Int32 rc, sqlite3 db) в Microsoft.Data.Sqlite.SqliteCommand.PrepareAndEnumerateStatements (таймер секундомера) + MoveNext () в Microsoft.Data.Sqlite.SqltehaMicrosoft.Data.Sqlite.SqliteCommand.ExecuteReaderAsync (Поведение CommandBehavior, CancellationToken cancellationToken) в Microsoft.Data.Sqlite.SqliteCommand.ExecuteDbDataReaderAsync (Поведение CommandBehavior, Отмена отмены * соединение, вызываемое как 100).json.

Я пробовал все, что мог найти.Включая просто простой путь, относительный путь, строку, которую я могу получить при просмотре Соединения, которое я настроил в VS, которое позволяет мне видеть таблицы и данные.Это строка подключения, которую она дает мне при настройке драйвера ODBC для Sqlite:

"DefaultConnection": "Dsn = SQLite3 Источник данных; база данных = J: \ OESAC \ Data \ sqlite \ oesac_new.db; stepapi = 0; syncpragma = NORMAL; notxn = 0; таймаут = 100000; короткие имена = 0; длинные имена = 0; nocreat = 1; nowchar = 0; fksupport = 0; oemcp = 0; bigint = 0; jdconv = 0 "

Вот более тонкая версия, которую я пробовал с этого сайта (connectionstrings.com).

"DefaultConnection": "DRIVER = Драйвер ODBC для SQLite3; База данных = J: \ OESAC \ Data \ oesac_new.db; LongNames = 0; Timeout = 1000; NoTXN = 0; SyncPragma = NORMAL; StepAPI = 0; "

1 Ответ

0 голосов
/ 04 апреля 2019

Ну, я счастливый человек. После 4 с лишним дней попыток установить простое соединение с sqlite для моих страниц с лесами, я нашел решение, которое является скорее результатом продолжения поиска в StackOverknow кое-чего / чего-либо, что могло бы помочь. В этом посте кто-то искал относительный путь для использования, но в качестве примера работал абсолютный путь: Указывает на другое расположение файла базы данных sqlite в .net.core и платформе сущностей

В моем файле контекста, где была проблема, MyDbContext: DbContext У меня сумасшедший другой синтаксис. Забавно, как он использует имя «Datasource =» только для строки абсолютного пути:

protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{   
    optionsBuilder.UseSqlite(@"Data source=J:\OESAC\Data\sqlite\oesac_new.db");
}

Совершенно сумасшедшие ссылки, основанные на том, что я не знаю. Во всяком случае, когда я изменил OnConfiguring, чтобы он соответствовал тому, что другой парень пытался уточнить в относительный путь, внезапно все работало для моих лесов таблицы Courses: Показать, Добавить, Изменить, Удалить, Сохранить. Уф. Я собирался использовать что-то большое и неуклюжее для управления простой базой данных из двух таблиц.

...