Создайте данные для таблицы отношений «многие ко многим» в ASP.NET Core MVC. ⇐ C#
Создайте данные для таблицы отношений «многие ко многим» в ASP.NET Core MVC.
Я создаю теги для сообщений на своем веб-сайте, используя связь «многие ко многим». Мне удалось создать таблицу базы данных PostTags с помощью Entity Framework, следуя документации Microsoft.
Теперь я хочу вставить данные тега в базу данных с помощью контроллера и ViewModel при создании сообщения, но понятия не имею, как это сделать.
Репозиторий GitHub
Мой код и то, что я пробовал –
Модели:
публичный класс PostModel { [Ключ] общественный ИНТ Id {получить; набор; } общедоступная строка? Название {получить; набор; } общедоступные теги List {get; набор; } общественный список PostTags {get; набор; } } публичный класс TagModel { [Ключ] общественный ИНТ Id {получить; набор; } общедоступная строка? Название {получить; набор; } общественный список сообщений {get; набор; } общественный список PostTags {get; набор; } } общедоступный класс PostTagModel { общественный ИНТ PostId {получить; набор; } общественный ИНТ TagId {получить; набор; } общественная PostModel Post {получить; набор; } общественный тег TagModel {get; набор; } } DatabaseContext.cs:
публичный класс DatabaseContext: DbContext { public DatabaseContext(параметры DbContextOptions): base(options) { } public DbSet Сообщения {get; набор; } public DbSet Теги {get; набор; } общественный DbSet PostTags {get; набор; } защищенное переопределение void OnModelCreating (ModelBuilder modelBuilder) { modelBuilder.Entity() .HasMany(e => e.Tags) .WithMany(e => e.Posts) .UsingEntity(); } } ViewModel:
публичный класс CreatePostViewModel { общедоступная строка? Название {получить; набор; } публичный интервал? Идентификатор тега {получить; набор; } общественный список TagList {get; набор; } } Контроллер:
CS0029: Невозможно неявно преобразовать тип 'int?' в 'System.Collections.GenericList
[HttpGet] общедоступный IActionResult Create() { // Инициализация тегов для просмотра вернуть просмотр(); } [HttpPost] [ВалидатеАнтиФоржериТокен] public IActionResult Create (CreatePostViewModel postVM) { если (ModelState.IsValid) { вар сообщение = новая PostModel { Заголовок = postVM.Title, Tags = postVM.TagId // CS0029: невозможно неявно преобразовать тип 'int?' в 'System.Collections.GenericList }; _postInterface.Add(сообщение); вернуть RedirectToAction("Индекс"); } еще { // Ошибка } вернуть представление (postVM); } Просмотр:
@using SimpleWebsite.ViewModels.PostViewModel @model CreatePostViewModel @foreach (элемент var в Model.TagList) { @item.Title }
Я создаю теги для сообщений на своем веб-сайте, используя связь «многие ко многим». Мне удалось создать таблицу базы данных PostTags с помощью Entity Framework, следуя документации Microsoft.
Теперь я хочу вставить данные тега в базу данных с помощью контроллера и ViewModel при создании сообщения, но понятия не имею, как это сделать.
Репозиторий GitHub
Мой код и то, что я пробовал –
Модели:
публичный класс PostModel { [Ключ] общественный ИНТ Id {получить; набор; } общедоступная строка? Название {получить; набор; } общедоступные теги List {get; набор; } общественный список PostTags {get; набор; } } публичный класс TagModel { [Ключ] общественный ИНТ Id {получить; набор; } общедоступная строка? Название {получить; набор; } общественный список сообщений {get; набор; } общественный список PostTags {get; набор; } } общедоступный класс PostTagModel { общественный ИНТ PostId {получить; набор; } общественный ИНТ TagId {получить; набор; } общественная PostModel Post {получить; набор; } общественный тег TagModel {get; набор; } } DatabaseContext.cs:
публичный класс DatabaseContext: DbContext { public DatabaseContext(параметры DbContextOptions): base(options) { } public DbSet Сообщения {get; набор; } public DbSet Теги {get; набор; } общественный DbSet PostTags {get; набор; } защищенное переопределение void OnModelCreating (ModelBuilder modelBuilder) { modelBuilder.Entity() .HasMany(e => e.Tags) .WithMany(e => e.Posts) .UsingEntity(); } } ViewModel:
публичный класс CreatePostViewModel { общедоступная строка? Название {получить; набор; } публичный интервал? Идентификатор тега {получить; набор; } общественный список TagList {get; набор; } } Контроллер:
CS0029: Невозможно неявно преобразовать тип 'int?' в 'System.Collections.GenericList
[HttpGet] общедоступный IActionResult Create() { // Инициализация тегов для просмотра вернуть просмотр(); } [HttpPost] [ВалидатеАнтиФоржериТокен] public IActionResult Create (CreatePostViewModel postVM) { если (ModelState.IsValid) { вар сообщение = новая PostModel { Заголовок = postVM.Title, Tags = postVM.TagId // CS0029: невозможно неявно преобразовать тип 'int?' в 'System.Collections.GenericList }; _postInterface.Add(сообщение); вернуть RedirectToAction("Индекс"); } еще { // Ошибка } вернуть представление (postVM); } Просмотр:
@using SimpleWebsite.ViewModels.PostViewModel @model CreatePostViewModel @foreach (элемент var в Model.TagList) { @item.Title }
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Весенняя загрузка данных отношений «многие ко многим» не будет связывать ошибку таблицы
Anonymous » » в форуме JAVA - 0 Ответы
- 98 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Entity Framework Core: включить неработоспособность для отношений «многие ко многим».
Anonymous » » в форуме C# - 0 Ответы
- 17 Просмотры
-
Последнее сообщение Anonymous
-