У меня есть форма, которая создает новый бренд.Пользователь выбирает название, изображение и URL-адрес веб-сайта для бренда и отправляет хиты.Сценарий редактирования работает так же.Проблема, с которой я сталкиваюсь, заключается в том, что при создании нового бренда публикуется правильный imageId, и вплоть до SaveChanges () в моих действиях это правильно.Когда я проверяю новую строку в базе данных, идентификатор удваивается, а затем некоторые.(например, если я отправлю 37, база данных изменит его на 78, 38 на 80 и т. д.) Я в тупике, почему это происходит.Вот мое действие:
[HttpPost]
public ActionResult NewBrand(Brand brand)
{
try
{
brand.BrandName = Request.Form["BrandName"];
brand.BrandImageId = int.Parse(Request.Form["Image.ImageId"]);
brand.BrandWebsite = Request.Form["BrandWebsite"];
_entities.Brands.AddObject(brand);
_entities.SaveChanges();
return RedirectToAction("Brands");
}
catch (Exception ex)
{
var script = "alert(" + ex.Message + ")";
return JavaScript(script);
}
}
И вот пример POST от firebug
Parametersapplication/x-www-form-urlencoded
BrandName Sample Brand
BrandWebsite www.somewebsite.com
Image.ImageId 37
Source
Content-Type: application/x-www-form-urlencoded Content-Length: 72
BrandName=Sample+Brand&Image.ImageId=37&BrandWebsite=www.somewebsite.com
Я использую структуру сущностей и построил свою базу данных с помощью мастеров в Visual Studio.Моя таблица брендов имеет внешний ключ ImageId, и у меня есть таблица изображений с первичным ключом ImageId, они имеют отношение один ко многим.Есть идеи?
edit
Я создал объект каркаса сущности, щелкнув правой кнопкой мыши по папке с моими моделями и добавив новый файл .edmx.А затем я щелкнул правой кнопкой мыши в представлении конструктора и нажал «обновить из базы данных», и он создал модель из таблиц, которые я создал.Я не выполнил никакой специальной настройки или настройки, кроме того, я не использую шаблон хранилища (да, это означает, что у меня есть код доступа к данным в моих контроллерах, я рефакторинг на этих выходных), который я узнал после запуска этого проекта.
_entities идет от этой строки вверху контроллера
private MHNHubEntities _entities = new MHNHubEntities();