Создание сообщения с тегами как многие ко многим в asp.net core 2 и EF core - PullRequest
0 голосов
/ 27 сентября 2018

У меня есть некоторые проблемы, связанные со взаимоотношениями «многие ко многим» в моем блоге.Если я добавлю MakaleId и EtiketId вручную в таблицу MakaleEtiket, это будет работать, но мне нужно сделать этот шаг при создании записи в блоге.Я надеюсь, что кто-то может помочь мне, спасибо заранее.Вот некоторые переменные переводы;

Etiket = tag

Makale = article

Мои сущности

using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;

namespace Bukalemur.WebUI.Entity
{
    public class Etiket
    {
        public int EtiketId { get; set; }
        public string EtiketAdi { get; set; }


        public ICollection<MakaleEtiket> MakaleEtikets { get; } = new List<MakaleEtiket>(); 
    }
}

Мой контекст

using Bukalemur.WebUI.Entity;
using Microsoft.EntityFrameworkCore;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;

namespace Bukalemur.WebUI.Repository.EntityFramework
{
    public class MakaleContext:DbContext
    {
        public MakaleContext(DbContextOptions<MakaleContext> options):base(options)
        {

        }

        public DbSet<Abone> Abones { get; set; }
        public DbSet<Makale> Makales { get; set; }
        public DbSet<Kategori> Kategoris { get; set; }
        public DbSet<Etiket> Etikets { get; set; }
        public DbSet<MakaleEtiket> MakaleEtikets { get; set; }

        protected override void OnModelCreating(ModelBuilder modelBuilder)
        {
            modelBuilder.Entity<MakaleEtiket>().HasKey(pk => new { pk.MakaleId, pk.EtiketId });

        }
    }
}

Мой контроллер создать действие

[HttpGet]
public IActionResult AddOrUpdate(int? id)
{
    ViewBag.Kategoriler = new SelectList(kategoriRepository.GetAll(), "KategoriId", "KategoriAdi");
    if (id == null)
    {
        return View(new Makale());
    }
    else
    {
        return View(makaleRepository.GetById((int)id));
    }
}

[HttpPost]
public async Task<IActionResult> AddorUpdate(Makale entity, IFormFile file, string etiketler)
{

    if (ModelState.IsValid)
    {
        if (etiketler != null)
        {
            string[] etiketdizi = etiketler.Split(',');
            foreach (var item in etiketdizi)
            {
                var yenietiket = new Etiket { EtiketAdi = item };

            }

        }

        var path = Path.Combine(Directory.GetCurrentDirectory(), "wwwroot\\img", file.FileName);
        using (var stream = new FileStream(path, FileMode.Create))
        {
            await file.CopyToAsync(stream);
        }
        entity.Image = file.FileName;
        makaleRepository.SaveMakale(entity);
        {

        };
        TempData["message"] = $"{entity.Baslik} kayıt edildi.";
        return RedirectToAction("Index", "Admin");


    }
    ViewBag.Kategoriler = new SelectList(kategoriRepository.GetAll(), "KategoriId", "KategoriAdi");
    return View(entity);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...