«Нет такой таблицы» в первом коде EntityFrameworkCore.Sqlite 3.1.1, когда таблица существует - PullRequest
0 голосов
/ 19 января 2020

Я следую этой статье о том, как работать с Entity Framework Core и Sqlite. Мои объекты названы по-разному и имеют разные свойства, но это единственное изменение, которое я внес в код, приведенный в статье.

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

Однако при попытке сохранить новый объект «Задача» появляется ошибка «Нет такой таблицы: Задачи». в нем.

Вот мой код:

Model.cs

public class TaskContext : DbContext
{
    public DbSet<Task> Tasks { get; set; }

    protected override void OnConfiguring(DbContextOptionsBuilder options)
        => options.UseSqlite("Data Source = TestDatabase.db");
}

Task.cs

public class Task
{
    public int TaskId { get; set; }
    public string TaskName { get; set; }
    public DateTime LastExecutionDateTime { get; set; }
    public TimeSpan ExecutionInterval { get; set; }
}

Program.cs

class Program
{
    static void Main(string[] args)
    {
        Console.WriteLine("Start.");

        using (var db = new TaskContext())
        {
            Console.WriteLine("Saving new task...");
            db.Add(new Task { TaskId=1, TaskName = "test", ExecutionInterval = new TimeSpan(0, 0, 10), LastExecutionDateTime = DateTime.Now });
            db.SaveChanges();
        }

        Console.WriteLine("End.");
    }
}

Как и в статье, я включил пакеты Nuget Microsoft.EntityFrameworkCore.Design и Microsoft.EntityFrameworkCore.Sqlite, включил миграцию и выполнил начальную миграцию (так создавалась база данных). У меня есть папка «Миграции» и таблица «__EFMigrationsHistory» в базе данных.

Так что я не могу понять, почему она выдаст такую ​​ошибку вместо добавления новой записи в таблицу.

1 Ответ

0 голосов
/ 20 января 2020

Что ж, это определенно было задержано.

По некоторым причинам миграция создает базу данных у подножия вашего проекта. При отладке все развертывается в серии каталогов, которые начинаются с «bin» и заканчиваются на «netcoreappX.X».

Угадайте, куда ведет жестко закодированный относительный путь? Также лучше предположить, что ТАКЖЕ есть файл * .db в этом «netcoreapp» размером 0 КБ.

Изменение пути от относительного к абсолютному исправляет вещи.

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