У меня есть простая форма, которая создает Категории с именем и назначенным им списком автомобилей.
Все работает отлично, за исключением того факта, что для каждой записи в БД я получаю вторую, до того как это значение будет нулевым везде, кроме родительского BrandId.
[HttpPost]
public ActionResult AddNewCategory(AddNewCategoryPostViewModel categoryInfo)
{
var brand = _repository.GetBrandById(categoryInfo.BrandId);
if (categoryInfo.Name == null || categoryInfo.Cars == null)
{
if (categoryInfo.Name == null)
{
ModelState.AddModelError("Name", "The name cannot be empty.");
}
if (categoryInfo.Cars == null)
{
ModelState.AddModelError("Cars", "At least one car must be selected.");
}
var cars = _insplib.GetDevCategorysForProject((int)brand.Id);
ViewBag.Cars = cars;
ViewBag.Selectedcars = categoryInfo.Cars;
return View(new Category()
{
Brand = brand
});
}
var category = new Category()
{
DateEntered = DateTime.Now,
IsArchived = false,
Name = categoryInfo.Name,
BrandId = categoryInfo.BrandId
};
_repository.AddOrUpdateCategory(category);
// more code here added to add the cars, but not relevant to this issue.
return RedirectToRoute("Category", new { brand = category.Brand.ShortName, categoryId = category.Id });
}
Мой метод хранилища:
public Category AddOrUpdateCategory(Category category)
{
if (category.Id == 0)
_context.AddToCategorys(category);
_context.SaveChanges();
return category;
}
Как видите, это довольно простой POST, но каждый раз, когда я создаю категорию, я получаю две записи:
ID Name DateEntered IsArchived
5 NULL NULL NULL 4
6 NewCategory 10/6/2011 False 4
Мой трюк состоял в том, чтобы просто просмотреть таблицу и удалить любую категорию с нулевыми значениями в имени. Но это, очевидно, не решает актуальную проблему.