Entity Framework Core с SQLite: таблица «Члены» не существует, несмотря на применение миграцииC#

Место общения программистов C#
Ответить
Anonymous
 Entity Framework Core с SQLite: таблица «Члены» не существует, несмотря на применение миграции

Сообщение Anonymous »

Проблема связана с использованием Entity Framework Core с SQLite в консольном приложении .NET, где, несмотря на применение миграции, таблица «Члены»**, похоже, не существует в базе данных SQLite.** Это проблема обычно проявляется в виде исключения Microsoft.Data.Sqlite.SqliteException с сообщением «Нет такой таблицы: участники» при попытке запросить или получить доступ к данным из таблицы «Члены» в базе данных.
Я устанавливаю Создайте консольное приложение .NET, используя Entity Framework Core с SQLite для управления данными участников. Я настроил EF Core со строкой подключения («DefaultConnectionString»: «DataSource=members.db;») в appsettings.json и определил класс Member для структуры таблицы Members. Мой класс MemberContext расширяет DbContext с помощью DbSet для доступа к данным.
После применения миграций (добавление миграций dotnet ef и обновление базы данных dotnet ef), что указывает на успешное создание схемы, я попытался запросить таблицу Members. в Program.cs. Однако я столкнулся с исключением Microsoft.Data.Sqlite.SqliteException, в котором указано «нет такой таблицы: члены». Это говорит о том, что таблица не найдена, несмотря на процесс миграции.
Сейчас я выясняю, почему таблица «Члены» не создается в SQLite, как ожидалось, после миграции. Будем признательны за любую информацию.
Вот мой код:
Мой файл Program.cs:
using System.Text;
using System.Xml.Serialization;
using Microsoft.Data.Sqlite;
using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
using Uebung;
using Uebung.Data.Models;

await using var db = new MemberContext();

Console.WriteLine($"Database path: {db.MemberDb}");

Console.WriteLine("Querying all members:");

var results =
from member in db.Members
select member;

await foreach (var s in results.AsAsyncEnumerable())
{
Console.WriteLine("Member: " + s.Vorname + " " + s.Nachname);
}


Мой файл appsettings.json:
{
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft.AspNetCore": "Warning"
}
},
"AllowedHosts": "*",
"ConnectionStrings":
{
"DefaultConnectionString": "DataSource=members.db;"
}
}


Мой файл Member.cs:
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using Microsoft.EntityFrameworkCore;

namespace Uebung.Data.Models;

public class MemberContext : DbContext
{

public DbSet Members { get; set; }

public string MemberDb { get; set; }

public MemberContext()
{
MemberDb = "members.db";
}

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

public class Member
{
[Key]
public int ID { get; set; }
public string? Vorname { get; set; }
public string? Nachname { get; set; }
}

И мой файл AppDbContext.cs:
using Microsoft.EntityFrameworkCore;
using Uebung;

public class AppDbContext : DbContext
{
public DbSet Members { get; set; }

public AppDbContext(DbContextOptions options) : base(options)
{

}
}



Подробнее здесь: https://stackoverflow.com/questions/786 ... te-applyin
Ответить

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

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

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

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

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