Несколько моделей одного вида и с другим внешним ключом - PullRequest
0 голосов
/ 15 ноября 2011

У меня есть 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" Заявление было прекращено.

1 Ответ

0 голосов
/ 15 ноября 2011

Посмотрите на CountryId создаваемых вами объектов и убедитесь, что они существуют в вашей таблице стран.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...