Entity Framework Core Однонаправленная связь «многие ко многим» не работаетC#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Entity Framework Core Однонаправленная связь «многие ко многим» не работает

Сообщение Anonymous »

Я хочу использовать однонаправленную связь «многие ко многим», но не могу заставить ее работать.
Я использую EF Core 8.0.6 и воссоздал пример ( https://learn.microsoft.com/en-us/ef/co ... ny-to-many) в новом проекте Visual Studio.
Все сообщения и все теги загружены, но Post.List остается пустым. Я что-то упустил?
SQL:
CREATE TABLE "Posts"
(
"Id" INTEGER NOT NULL CONSTRAINT "PK_Posts" PRIMARY KEY
);

CREATE TABLE "Tags"
(
"Id" INTEGER NOT NULL CONSTRAINT "PK_Tags" PRIMARY KEY
);

CREATE TABLE "PostTag"
(
"PostId" INTEGER NOT NULL,
"TagsId" INTEGER NOT NULL,
CONSTRAINT "PK_PostTag" PRIMARY KEY ("PostId", "TagsId"),
CONSTRAINT "FK_PostTag_Posts_PostId"
FOREIGN KEY ("PostId") REFERENCES "Posts" ("Id") ON DELETE CASCADE,
CONSTRAINT "FK_PostTag_Tags_TagsId"
FOREIGN KEY ("TagsId") REFERENCES "Tags" ("Id") ON DELETE CASCADE
);

INSERT INTO Posts (Id) VALUES(0),(1),(2),(3);

INSERT INTO Tags (Id) VALUES(0),(1),(2),(3);

INSERT INTO PostTag (PostId, TagsId)
VALUES (0, 0), (0, 1), (0, 2), (1, 3), (2, 2), (2, 3), (3, 0);

C#:
internal class DataBaseContext : DbContext
{
public DbSet Posts { get; set; }
public DbSet Tags { get; set; }

protected override void OnConfiguring(DbContextOptionsBuilder options)
{
options.UseSqlServer("Data Source=*; Database=*; User Id=*; Password=*; TrustServerCertificate=true");
}

protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity().HasMany(e => e.Tags).WithMany();
}
}

public class Post
{
public int Id { get; set; }
public List Tags { get; } = [];
}

public class Tag
{
public int Id { get; set; }
}

internal class Program
{
DataBaseContext DBContext { get; set; }

static void Main(string[] args)
{
Console.WriteLine("Hello, World!");
var DBContext = new DataBaseContext();
List posts = DBContext.Posts.ToList();
List tags = DBContext.Tags.ToList();
}
}


Подробнее здесь: https://stackoverflow.com/questions/787 ... ot-working
Реклама
Ответить Пред. темаСлед. тема

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

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

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

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

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

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