У меня есть некоторые проблемы, связанные со взаимоотношениями «многие ко многим» в моем блоге.Если я добавлю 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);
}