Отношение многие ко многим в MVC-запись в таблицу с внешними ключами
В модели у меня есть 3 таблицы по отношению ко многим многим.
У меня вопрос, как записывать данные в таблицу позицию по. Я понимаю, что сначала я должен записать данные в таблицу порядка и положения. Затем, имея два ключа из этих массивов, я должен прочитать их и отправить в OrderPosition как внешние ключи, где они будут сохранены. Как должна выглядеть запись этих инструкций?
Что я уже пробовал:
<pre lang="c#"><pre> public class Order { [Key] public int IdOrder { get; set; } public string UserId { get; set; } public virtual User User { get; set; } public int IdOrderAttachment { get; set; } public virtual OrderAttachment OrderAttachment { get; set; } public virtual ICollection<Employee> Employee { get; set; } [Required(ErrorMessage = "Specify the date of order acceptance")] [Display(Name = "Date of acceptance of the order")] [DisplayFormat(DataFormatString = "{0:yyyy-MM-dd}", ApplyFormatInEditMode = true)] public DateTimeDateOfAcceptance { get; set; } [Display(Name = "Date of completion planning")] [DisplayFormat(DataFormatString = "{0:yyyy-MM-dd}", ApplyFormatInEditMode = true)] public DateTime? DateOfCompletionPlanning { get; set; } [Display(Name = "End Date")] [DisplayFormat(DataFormatString = "{0:yyyy-MM-dd}", ApplyFormatInEditMode = true)] public DateTime? EndDate { get; set; } [Required(ErrorMessage = "Enter the subject")] [MaxLength(200, ErrorMessage = "Name max 200 characters")] [Display(Name = "Subject")] public string Subject { get; set; } public virtual ICollection<OrderPosition> OrderPosition{ get; set; } public class OrderPosition { [Key] public int IdOrderPosition { get; set; } public int IdOrder { get; set; } public int IdPosition { get; set; } public virtual Order Order { get; set; } public virtual Position Position { get; set; } } public class Position { [Key] public int IdPosition { get; set; } [Column(TypeName = "nvarchar(MAX)")] [Display(Name = "Description")] [UIHint("tinymce_jquery_full"), AllowHtml] public string Description { get; set; } public virtual ICollection<OrderPosition> OrderPosition{ get; set; } } [HttpPost] [ValidateAntiForgeryToken] public ActionResult CreateOrder(HttpPostedFileBase file, DataOrderUserViewModel viewModel) { var userId = User.Identity.GetUserId(); if (ModelState.IsValid) { if (file != null && file.ContentLength > 0) { string path = "/Content/Layout/CompanyFile"; if (!Directory.Exists(HttpContext.Server.MapPath(path))) { Directory.CreateDirectory(HttpContext.Server.MapPath(path)); } string filename = Path.GetFileName(file.FileName); file.SaveAs(Path.Combine(HttpContext.Server.MapPath(path), filename)); viewModel.NameFile = path+ "/" + filename; //var nameFile = Path.GetFileName(file.FileName); //var path = Path.Combine(Server.MapPath("/Content/Layout/CompanyFile"), nameFile); //file.SaveAs(path); } var order = new Order() { DateTimeDateOfAcceptance = viewModel.DateTimeDateOfAcceptance, Subject= viewModel.Subject, UserId = userId }; var position = new Position () { Description = viewModel.Description }; var orderAttachment = new OrderAttachment () { NameFile= viewModel.NameFile, Description = viewModel.Description2 }; db.Order.Add(order); db.Position.Add(position); db.OrderAttachment.Add(orderAttachment); db.SaveChanges(); } return RedirectToAction("Index", "Administration"); }