При запуске проекта я получаю эту ошибку« Операция не может быть завершена, потому что DbContext был удален ». Хотя проверка сети я видел много ответов для этого, но я думаю, что у меня есть, что все в моей code.Please проверить мой код и дайте мне знать, что в этом плохого, пожалуйста, помогите мне ... Это код, написанный в контроллере и в Elmah я получаю ошибку.операция не может быть завершена, потому что DbContext был удален. »
public ActionResult Create(Permissions permissions)
{
try
{
using (var db = new AdminDb())
{
//delete existing permissions of the selected role..
IList<int> ModuleMenu = (from d in db.MenuConfig.AsNoTracking()
where d.ModuleId == permissions.ModuleId
select d.MenuConfigId).ToList();
var RoleMenu = (from c in db.RoleMenuMapping where ModuleMenu.Contains((int)c.MenuId) && c.RoleId == permissions.RoleId select c).ToList();
foreach (var rm in RoleMenu)
{
db.RoleMenuMapping.Remove(rm);
db.SaveChanges(); // Added for avoiding The object is in a detached state Error
}
// add new permissions to db
if (permissions.RoleMenu != null)
{
foreach (var rm in permissions.RoleMenu)
{
RoleMenuMapping RoleMapping = new RoleMenuMapping();
//to get the next ID
string EntityName = (db as IObjectContextAdapter).ObjectContext.CreateObjectSet<RoleMenuMapping>().EntitySet.Name;
Int32 nextval = new Assyst.PanERP.Common.Common().getNextSequence(EntityName);
RoleMapping.RoleMenuMappingId = nextval;
RoleMapping.RoleId = permissions.RoleId;
RoleMapping.MenuId = rm.Id;
RoleMapping.BusinessUnitId = 1;
RoleMapping.MenuAdd = (rm.Add == true ? 1 : 0);
RoleMapping.MenuDelete = (rm.Delete == true ? 1 : 0);
RoleMapping.MenuModify = (rm.Modify == true ? 1 : 0);
RoleMapping.MenuView = (rm.View == true ? 1 : 0);
RoleMapping.MenuImport = (rm.Import == true ? 1 : 0);
RoleMapping.MenuExport = (rm.Export == true ? 1 : 0);
RoleMapping.MenuRestrictedView = (rm.RestrictedView == true ? 1 : 0);
RoleMapping.MenuBulkUpdate = (rm.BulkUpdate == true ? 1 : 0);
RoleMapping.MenuBulkDelete = (rm.BulkDelete == true ? 1 : 0);
RoleMapping.MenuSpecial1 = (rm.Special1 == true ? 1 : 0);
RoleMapping.MenuSpecial2 = (rm.Special2 == true ? 1 : 0);
RoleMapping.MenuSpecial3 = (rm.Special3 == true ? 1 : 0);
RoleMapping.MenuSpecial4 = (rm.Special4 == true ? 1 : 0);
RoleMapping.MenuSpecial5 = (rm.Special5 == true ? 1 : 0);
db.RoleMenuMapping.Add(RoleMapping);
}
}
db.SaveChanges();
ViewBag.RoleId = new SelectList(db.Role, "Id", "Code");
ViewBag.Module = new SelectList(db.Module, "ModuleId", "ModuleName");
ViewBag.ScreenType = new[] { new SelectListItem { Text = "Select", Value = "select" }, new SelectListItem { Text = "Master", Value = "1" }, new SelectListItem { Text = "Report", Value = "2" }, new SelectListItem { Text = "Transaction", Value = "3" } };
return View("Index");
}
}
catch (Exception ex)
{
Elmah.ErrorSignal.FromCurrentContext().Raise(ex);
return Json(new { Result = "ERROR", Message = ex.Message });
}
}
Где же именно появится это исключение? Какая линия? – Domysee
Не уверен, на какой строке произошла ошибка, потому что журнал ошибок Elmah просто отображает это как ошибку. На самом деле меня попросили поработать над этим кодом, чтобы найти причину ошибки. –
, если вы меняете 'return Json (new {Result =" ERROR ", Message = ex.Message});' to 'return Json (new {Result =" ERROR ", Message = ex.ToString()});' you возможно, сможет показать строку, где произошла ошибка. – WiiMaxx