У меня есть 2 таблицы, Stack и User, и их много к одной.
[HasUniqueDomainSignature(ErrorMessage = "This stack already exists")]
public class Stack : Entity
{
[DomainSignature]
public virtual string Title { get; set; }
public virtual User PostBy { get; set; }
}
[HasUniqueDomainSignature(ErrorMessage="This email address already exists")]
public class User : Entity
{
[DomainSignature]
public virtual string Email { get; set; }
public User()
{
this.Stacks = new List<Stack>();
}
}
вот мой код для добавления стека. если я добавлю стек с уникальным заголовком, все работает, нет проблем. Я добавляю новый стек с заголовком, который уже существует в базах данных, проверка не пройдена, я проверил ModelState, проверка не удалась из-за пользователя, а не объекта стека. Я получаю сообщение «Этот адрес электронной почты уже существует», я не добавляю нового пользователя, просто назначаю пользователя стеку. Я должен получить "Этот стек уже существует"
[Authorize]
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Add(Stack stack)
{
if (ModelState.IsValid)
{
var user = _userRepository.GetAll().Where(u => u.Email == HttpContext.User.Identity.Name).SingleOrDefault();
if (user == null)
throw new ArgumentNullException("User cannot be found, please re-login.");
stack.PostDate = DateTime.Now;
stack.PostBy = user;
ActionConfirmation<Stack> confirmation = _stackCudTasks.SaveOrUpdate(stack);
if (confirmation.WasSuccessful)
{
TempData["message"] = confirmation.Message;
return RedirectToAction("Index");
}
ViewBag["message"] = confirmation.Message;
}
return View(_stackCudTasks.CreateEditViewModel(stack));
}