我一直在学习 ASP.NET Core 和 Entity Framework Core 的教程。我能够连接到我的 Microsoft SQL Server 数据库并获取和添加行,但我无法更新它们。我的更新方法附加一个新用户,然后将状态设置为已修改。
每次虽然我收到错误:
System.InvalidOperationException: 在尝试将实体的状态更改为“已修改”时,实体类型“UserData”上的“Id”属性具有临时值。明确设置永久值或确保数据库配置为为此属性生成值。
我尝试将主键属性设置为生成的数据库,并尽力在数据库中实现它,但我不确定它是否有效。我还尝试使用 FromSQL 方法运行 SQL 更新,但没有任何改变(当我尝试删除时,我遇到了类似的并且可能是单独的问题)。
这是来自数据库上下文实现的更新方法:
public UserData Update(UserData updatedUser)
{
var entity = db.Users.Attach(updatedUser);
entity.State = EntityState.Modified;
//db.Users.FromSql<UserData>($"UPDATE Users SET user_name={updatedUser.user_name}, first_name={updatedUser.first_name}, last_name={updatedUser.last_name}, age={updatedUser.age}, email={updatedUser.email} WHERE");
return updatedUser;
}
Run Code Online (Sandbox Code Playgroud)
我在另一种方法中进行了保存更改,该方法在此方法之后直接调用。
这是我的数据模型:
public class UserData
{
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public Int64 Id { get; set; }
public string user_name { get; set; }
public string first_name { get; set; }
public string last_name { get; set; } …Run Code Online (Sandbox Code Playgroud)