У меня есть 5 сущностей, и я использую собственную модель для трех из них, но мне нужен внешний ключ других 2 в модели, пользовательская модель имеет вид
public class CourierRape
{
public Sender Sender { get; set; }
public Receiver Receiver { get; set; }
public Parcel Parcel { get; set; }
}
Два оставшихся объекта - Country
и City
Контроллер выглядит следующим образом
public ActionResult Create()
{
ViewBag.S_City_Id = new SelectList(db.Cities, "Id", "Name");
ViewBag.S_Country_Id = new SelectList(db.Countries, "Id", "Name");
ViewBag.R_City_Id = new SelectList(db.Cities, "Id", "Name");
ViewBag.R_Country_Id = new SelectList(db.Countries, "Id", "Name");
return View();
}
//
// POST: /Courier/Create
[HttpPost]
public ActionResult Create(CourierRape c)
{
ViewBag.S_City_Id = new SelectList(db.Cities, "Id", "Name", c.Sender.S_City_Id);
ViewBag.S_Country_Id = new SelectList(db.Countries, "Id", "Name", c.Sender.S_Country_Id);
ViewBag.R_City_Id = new SelectList(db.Cities, "Id", "Name", c.Receiver.R_City_Id);
ViewBag.R_Country_Id = new SelectList(db.Countries, "Id", "Name", c.Receiver.R_Country_Id);
try
{
SenderController s = new SenderController();
ReceiverController r = new ReceiverController();
ParcelController p = new ParcelController();
r.Create(c.Receiver);
s.Create(c.Sender);
c.Parcel.Sender_Id = c.Sender.Id;
c.Parcel.Receiver_Id = c.Receiver.Id;
p.Create(c.Parcel);
return RedirectToAction("Index");
}
catch
{
ViewBag.Message = c.Sender.S_City_Id.ToString() +" " + c.Receiver.R_City_Id.ToString() + " " + c.Receiver.R_Country_Id.ToString() + " "+ c.Sender.S_Country_Id.ToString();
return View(c);
}
но выдает исключение и возвращает модель с 0 из внешних ключей
И когда я удаляю try catch, выдает следующую ошибку
Оператор INSERT конфликтует с ограничением FOREIGN KEY "FK_Receiver_Country". Конфликт произошел в базе данных "452171974654368803C496909AE805A3_ENTS \ VISUAL STUDIO 2010 \ PROJECTS \ COPY OF ECOMMERCECOURIER \ ECOMMERCECOURIER \ APP_DATA \ COURIER.MDF", таблица "dbo.Country", таблица "dbo.Country", таблица "dbo.Country"
Заявление было прекращено.