Я боролся с этим весь день и до сих пор не могу.
Я могу упростить задачу следующим образом:
У меня есть отчеты и отчеты есть формы. У меня есть модели сущностей каждого. У них есть идентификатор Guid, как показано ниже.
![Model](https://i.stack.imgur.com/jUgkR.png)
Я пытаюсь получить одно представление, в котором я могу создать отчет и форму. В качестве конечной цели я хотел бы иметь возможность добавлять несколько форм, но только одна была бы отличной. Мой контроллер выглядит следующим образом:
// GET: /AllInOne/Create
public ActionResult Create()
{
ViewBag.PossibleReportBases = reportBaseRepository.All;
ViewBag.PossibleCategories = categoryRepository.All;
var model = new Report {FromDate = DateTime.Now};
model.Forms.Add(new Form());
return View(model);
}
// POST: /AllInOne/Create
[HttpPost]
public ActionResult Create(Report report)
{
if (ModelState.IsValid) {
reportRepository.InsertOrUpdate(report);
reportRepository.Save();
return RedirectToAction("Index");
}
else
{
ViewBag.PossibleReportBases = reportBaseRepository.All;
ViewBag.PossibleCategories = categoryRepository.All;
return View();
}
}
Код репозитория выглядит следующим образом:
public void InsertOrUpdate(Report report)
{
if (report.Id == default(System.Guid)) {
// New entity
report.Id = Guid.NewGuid();
context.Reports.AddObject(report);
} else {
// Existing entity
context.Reports.Attach(report);
context.ObjectStateManager.ChangeObjectState(report, EntityState.Modified);
}
}
В какой-то момент привязка выдала мне эту ошибку:
Коллекция EntityCollection уже инициализирована. Метод InitializeRelatedCollection следует вызывать только для инициализации новой коллекции EntityCollection во время десериализации графа объекта.
Я перепробовал много вещей для представлений, но ни один из них не сработал.
Пожалуйста, помогите.