- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我将 Identity Core 1.0 与 ASP.NET MVC Core 1.0 和 Entity Framework Core 1.0 结合使用来创建一个简单的用户注册系统 this article作为起点,我正在尝试添加用户角色。我可以添加用户角色,但无法编辑它们。这是 RolesController
中的 Edit
操作:
[HttpPost]
[ValidateAntiForgeryToken]
public IActionResult Edit(IdentityRole role)
{
try
{
_db.Roles.Attach(role);
_db.Entry(role).State = Microsoft.EntityFrameworkCore.EntityState.Modified;
_db.SaveChanges();
return RedirectToAction("Index");
}
catch (Exception ex)
{
Console.WriteLine(ex);
return View();
}
}
这是相应 View 中的表单:
@model Microsoft.AspNet.Identity.EntityFramework.IdentityRole
@{
ViewBag.Title = "Edit";
}
<h2>Edit Role</h2>
<hr />
@using (Html.BeginForm())
{
@Html.AntiForgeryToken()
@Html.ValidationSummary(true)
@Html.HiddenFor(model => model.Id)
<div>Role name</div>
<p>@Html.TextBoxFor(model => model.Name)</p>
<input type="submit" value="Save" />
}
新的角色名称没有保存到数据库中,我得到以下异常:Database operation expected to affect 1 row(s) but actually affected 0 row(s).加载实体后数据可能已被修改或删除。
我能够使用这个确切的代码(使用 Microsoft.AspNet.Identity.EntityFramework
依赖项而不是 EntityFrameworkCore
)使用 EF 7、Identity 3 编辑数据库条目等
关于为什么这段代码不允许修改数据库条目有什么想法吗?
最佳答案
除非有一个隐藏的异常作为愚蠢的随机异常隐藏在这背后,否则在异常中明确说明原因。
在 Edit
操作中收到 role
对象时,检查 Id
并尝试在数据库中查找该 id。您看到的异常消息指出,它期望找到与您附加的对象匹配的 Id 的行,但事实并非如此,因此无法进行更新,因为它找不到匹配的行来更新它.
编辑:
您两次附加实体,删除对 .Attach(role)
的调用并保留其下方足以将对象添加到修改状态的跟踪上下文的行。
//_db.Roles.Attach(role); //REMOVE THIS LINE !.
_db.Entry(role).State = Microsoft.EntityFrameworkCore.EntityState.Modified;
请注意,将条目状态设置为已修改将在调用 .SaveChanges()
时更新所有属性值,因此如果您只想更新某些属性,请参阅 this answer .
如果这不能解决您的问题,请检查您可能遗漏的任何内部异常。有时异常消息没有意义并掩盖了您可能能够在内部异常中找到的真正问题。
关于c# - 无法使用 EFCore、EntityState.Modified : "Database operation expected to affect 1 row(s) but actually affected 0 row(s)." 编辑数据库条目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39460686/
我遇到了错误 'EntityState' is an ambiguous reference between 'System.Data.EntityState' and 'System.Data.En
Entity Framework 6中有多种添加/删除实体的方法,例如添加实体,我们可以使用:- b.Students.Add(student); db.SaveChanges(); 或 db.Ent
我最近在 visual studio 中做了一些更新,这个错误开始发生,我真的是 MVC 的新手,我不确定是什么导致了这个错误。 using System; using System.
我在使用 Entity Framework 时在 asp.net 中遇到此错误:“无法将类型 System.Data.EntityState 隐式转换为 System.Data.Entity.Enti
我想在客户列表的每一行上放置一个“删除”按钮和一个“取消”按钮。当客户为“未更改”时,“取消”按钮被禁用。但是,当客户转换到更改状态(“已添加”、“已修改”、“已删除”)时,我想启用“取消”按钮,以便
我一直在修改在 Entity Framework (来自现有 MSSQL 数据库)生成的模型中包含外键的选项。 假设我有一个 Person 和 Company 模型,我想同时创建这两个模型。公司可以有
我正在阅读以下有关 Entity Framework 6 的教程 Link .在名为“为教师添加编辑页面”的部分中,作者在 Post edit 操作方法中编写了以下代码:- [HttpPost, Ac
ASP.NET EF Core 中的 _context.Entry(entity).State = EntityState.Modified 和 _context.Entity.Update(enti
当我设置 db.Entry(episode).State = EntityState.Deleted EF 从我的列表中删除剧集并抛出 collection was modified 枚举操作可能无法
在 Entity Framework 中,当System.data.entity程序集未添加到项目中时,有时会发生这种情况。但是,为什么我之前在其他 MVC 项目中没有出现此错误。 它有时会发生,但很
为什么在这篇文章中: http://www.asp.net/mvc/tutorials/getting-started-with-ef-using-mvc/implementing-the-repos
public static Result SaveCutomer(Customer customer) { using (AshdorEntities context = new Ashdor
我是 MVC3 的新手,我试图在编辑内容两个外键(BRANCH_ID、ITEM_MASTER_ID)后执行更新功能。 当 branch_id 或 Item_master_id 未更改时,我面临的问题很
我正在关注 this在 Web API 项目中实现存储库模式的文章。在存储库中实现更新方法时,我遵循了提供的示例,使用: context.Entry(item).State = System.Data
与其说话,让我用代码说话: Dim Contact = Context.Contacts.Include("Phones") Dim phone = Contact.Phones(0) Contact
// Rollback changes switch (entry.State) { case EntityState.Added: entry.State = EntityS
请引用以下代码片段: using (var entities = new SchoolDBEntities()) { ////entities.Students
我有一个简单的雪花模式,我从中生成了我的 Entity Framework 模型。 问题是我试图将一个子实体映射到一个现有的父和/或祖 parent 实体,但它仍然插入它。 我关注了这个: Inser
我正在为我们的应用程序做一个简单的实体更改日志记录。出现的一个问题是,虽然 DbEntityEntry.State 属性的枚举值显然是互斥的 (See MSDN),但它是用 Flags 属性定义的,并
我有一个显示 Shipment 实体的 WPF View 。我有一个包含星号的文本 block ,它将提醒用户记录已更改但未保存。我最初希望将此(使用转换器)的可见性绑定(bind)到 Shipmen
我是一名优秀的程序员,十分优秀!