Joh*_* Mc 10 .net c# entity-framework
我有一个User对象,当它使用DbContext上的Remove()删除时,它不会从数据库中删除.奇怪的是,我检索用户的查询不再返回.
此代码通过我的应用程序使用,并且可以毫无问题地用于其他实体.
我非常感谢有关这可能是什么的建议,因为我很难过!
#region Delete
public virtual void Delete(User entity)
{
var user = _context.Users.FirstOrDefault(u => u.UserId == entity.UserId);
if (user != null)
{
user.Roles.Clear();
var actionHistories = _context.ActionHistories.Where(u => u.User.UserId == user.UserId);
foreach (var actionHistory in actionHistories)
{
_context.ActionHistories.Remove(actionHistory);
}
_context.Users.Remove(user);
_context.SaveChanges();
}
}
#endregion
Run Code Online (Sandbox Code Playgroud)
PS我添加了删除角色和ActionHistories的代码,以测试问题是否存在相关实体,但它没有解决问题.
我使用了与 @tomsullivan1989 相同的答案,但使用了 EntityState.Deleted;它解决了我类似的问题。其中有错误消息无法更改关系,因为一个或多个外键属性不可为空
尝试添加:
_context.Entry(user).State = EntityState.Modified;
Run Code Online (Sandbox Code Playgroud)
之前
_context.SaveChanges();
Run Code Online (Sandbox Code Playgroud)
我的建议是尝试使用分析工具(例如来自冬眠犀牛的 EFprof,它有免费试用版)。
它将准确地向您显示 SQL EF 生成的内容,因此您可以在跳过 SaveChanges 时观察会发生什么。
这听起来确实很奇怪,也许有一些静默的 SQL 错误被抛出,而探查器可能会揭示这些错误。
| 归档时间: |
|
| 查看次数: |
8834 次 |
| 最近记录: |