Я кодирую приложение MVC, которое содержит пару ассоциаций «многие-ко-многим». Одна из них - это обычная ассоциация Role <---> Account
. В основном у меня есть таблица, полная предопределенных Ролей, из которых пользователь может выбрать. Я создал ViewModel, который содержит мою модель сущности и несколько коллекций, которые я использую, одна из них - коллекция ролей. Затем я заполняю свою форму Create этими значениями и снова разрешаю их на [HttpPost]
Создайте действие.«Объект сущности не может ссылаться на несколько экземпляров IEntityChangeTracker» при добавлении объекта в контекст
Вот соответствующий код:
ViewModel Класс: Код
public class AccountsViewModel
{
public Accounts Account { get; set; }
public List<Roles> RolesList { get; set; }
}
Контроллер:
public ActionResult Create()
{
AccountsViewModel viewModel = new AccountsViewModel();
viewModel.RolesList = rolesService.GetAllRoles();
return View(viewModel);
}
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Create(AccountsViewModel viewModel)
{
if (ModelState.IsValid)
{
foreach(Roles role in viewModel.RolesList)
{
if (role.IsSelected)
{
Roles selectedRole = rolesService.GetRole(role.Id);
viewModel.Account.Roles.Add(selectedRole);
}
}
//Some more code here...
accountsService.AddAccount(viewModel.Account);
}
}
класс Таможенные услуги (accountsService
)
public void AddAccount(Accounts newAccount)
{
//AppDataContext is an instance of <Model>Container
AppDataContext.AccountsSet.Add(newAccount);
AppDataContext.SaveChanges();
}
А мой Создать Вид:
<div class="form-group">
@Html.LabelFor(model => model.Account.Roles, htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-10">
@for (int i = 0; i < Model.RolesList.Count; i++)
{
@Html.HiddenFor(m => m.RolesList[i].Id)
@Html.CheckBoxFor(m => m.RolesList[i].IsSelected)
@Html.LabelFor(m => m.RolesList[i].IsSelected, Model.RolesList[i].Name)
<br />
}
</div>
</div>
Теперь к моей актуальной проблеме, каждый раз, когда я пытаюсь добавить новый объект Accounts, я получаю ошибку "An entity object cannot be referenced by multiple instances of IEntityChangeTracker."
я уже смотрел на несколько постов, найденных в Интернете, но я не могут действительно связывать их с возможными ошибками, которые я сделал в своем коде. Так может кто-нибудь помочь мне здесь?
показать след следа. – tdbeckett
Возможно, он пытается добавить дублирующий элемент в базу данных – erikscandola
Вы видите это: http://stackoverflow.com/questions/10191734/entity-object-cannot-be-referenced-by-multiple-instances-of-ientitychangetracker Как вы создаете свой контекст? И это похоже на ваш вопрос: http://stackoverflow.com/q/694625/1566267 –