【发布时间】:2012-01-17 21:05:29
【问题描述】:
我收到一个异常:
无法更新 EntitySet 'Session',因为它有一个 DefiningQuery 并且没有 元素存在于元素中 支持当前操作。
尝试从数据库表中删除一行时。为存在的行调用SaveChanges() 时出现异常。以下是我的代码:
public static Func<DC21GPDEntities, string, IQueryable<Session>> compiledDeleteQuery =
CompiledQuery.Compile((DC21GPDEntities ctx, string userId) =>
(from rows in ctx.Sessions
where rows.User_ID == userId
select rows));
[HttpPost]
public ActionResult Index(string searchItem )
{
try
{
string userId =searchItem.Trim();
string successMessage
= "The session for User ID: " + userId + " has been cleared in Fascor.";
dc21gpdContext.CommandTimeout = 180;
Models.Session session = Queries.compiledDeleteQuery(dc21gpdContext, userId).FirstOrDefault();
if (session == null)
successMessage = "Session for User ID: " + userId + " does noe exist";
else
{
dc21gpdContext.DeleteObject(session);
dc21gpdContext.SaveChanges();
}
ViewData["SuccessMessage"] = successMessage;
return View();
}
catch (Exception ex)
{
ViewData["SuccessMessage"] = "Failed to clear session";
return View();
}
}
【问题讨论】:
-
Session表有主键吗?
-
@Klaus Byskov Hoffmann:不幸的是,它没有主键
标签: entity-framework c#-4.0 linq-to-entities asp.net-4.0 compiled-query