Я создаю очень простую форму загрузки файла MVC asp.net. В настоящее время у меня возникла проблема с созданием нового объекта базы данных, в котором хранится информация о указанном файле.Проблема с связанной сущностью в asp.net MVC создать форму с использованием структуры сущности
Код для метода действия выглядит следующим образом:
[Authorize(Roles = "Admin")]
public ActionResult AddFile(Guid? id)
{
var org = organisationRepository.GetOrganisationByID(id.Value);
Quote newFile = new Quote();
newFile.Organisation = org;
newFile.QuotedBy = User.Identity.Name;
return View("AddFile", newFile);
}
Проблема заключается в том, что значение newFile.Organisation теряется, когда форма размещена обратно. Я полагаю, что на данном этапе EF не дает значения для OrganisationID.
[Authorize(Roles = "Admin")]
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult AddFile(Quote quote)
{
//save the file to the FS - nice!
if (ModelState.IsValid)
{
try
{
foreach (string inputTagName in Request.Files)
{
HttpPostedFileBase file = Request.Files[inputTagName];
if (file.ContentLength > 0)
{
string filePath = Path.Combine(HttpContext.Server.MapPath("~/Content/TempOrgFiles/")
, Path.GetFileName(file.FileName));
file.SaveAs(filePath);
quote.QuoteURL = file.FileName;
}
}
surveyRepository.AddQuote(quote);
surveyRepository.Save();
}
catch (Exception ex)
{
//add model state errors
ViewData["error"] = ex.Message;
}
}
return View("AddFile");
}
Если бы это было Linq к SQL я бы simplt установить OrganisationID, но с ним быть EF, что не представляется возможным (по крайней мере, с моей установке)
Любые идеи, как лучший способ справиться с этими ситуациями ? (За исключение делает что-то сумасшедшее, как установку скрытого поля формы в organisaionid и установить его в методе POST)
захват идентификатора организации в сообщении, похоже, сработал - но привел к новой новой ошибке. Объект сущности не может ссылаться на несколько экземпляров IEntityChangeTracker. – Sergio
Является ли этот код всем, что вы делаете в почте? Это происходит, когда вы пытаетесь подключить объекты из разных контекстов. – LukLed
Yep - связанные методы хранилища следующие: public void AddQuote (Quote q) { db.AddToQuotes (q); } public void Save() { db.SaveChanges(); } Я полагаю, что, возможно, когда я назначу quote.Organisation для org, цитата привязана и отслеживается через этот предметный контекст? Затем, когда я пытаюсь добавить к db через другой контекст, все запутывается и исключается ... – Sergio