实体框架6添加/更新-编辑时出错,并尝试将编辑后的实体添加为新实体

维兰克斯

我有一个像下面的模型

public class XYZModel 
{
public string Id; // GUID, primary key;
public string Name;
public string AssociationId; // GUID, AllowNull;
}

我在做什么..
这很好

XYZModel abc = new XYZModel();
abc.Id = Convert.ToString(Guid.NewGuid());
abc.Name = "ABC Name";
xyzDbContext.XYZModels.Add(abc);
xyzDbContext.SaveChanges();

我的目标是什么?按ID获取实体,对其进行编辑,更改其主键ID值,然后将其添加为新条目。但是添加时发生错误。

XYZModel xyz = xyzDbContext.XYZModels.Find("xyzguid");

//modifying it
xyz.AssociationId = xyz.Id;
xyz.Id = Convert.ToString(Guid.NewGuid());
xyz.Name = "New Name";

//trying to add it as new entry
xyzDbContext.XYZModels.Add(xyz);// Error 
xyzDbContext.SaveChanges();

引发错误
属性“ Id”是对象键信息的一部分,无法修改。

拉马尔

仅当xyz对象与分离时,您才可以这样做Context

有两种方法可以做到这一点:

XYZModel xyz = xyzDbContext.XYZModels.Find("xyzguid");
xyzDbContext.Entry(xyz).State = EntityState.Detached;

或使用 AsNoTracking.FirstOrDefault

XYZModel xyz = xyzDbContext.XYZModels.AsNoTracking().FirstOrDefault(s => s.Id =="xyzguid");

您的第一种方法的代码:

XYZModel xyz = xyzDbContext.XYZModels.Find("xyzguid");

xyzDbContext.Entry(xyz).State = EntityState.Detached;

//modifying it
xyz.AssociationId = xyz.Id;
xyz.Id = Convert.ToString(Guid.NewGuid());
xyz.Name = "New Name";

//trying to add it as new entry
xyzDbContext.XYZModels.Add(xyz);// No Error 
xyzDbContext.SaveChanges();  

注意:必须DatabaseGeneratedOption.NoneId属性使用注释

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

实体框架6添加/更新-编辑时出错,并尝试将编辑后的实体添加为新实体

来自分类Dev

实体框架嵌套实体添加或更新

来自分类Dev

实体框架添加新实体

来自分类Dev

实体框架6更新图

来自分类Dev

实体框架6添加外键

来自分类Dev

实体框架-添加实体时DbUpdateException

来自分类Dev

实体框架6-如何添加子实体?

来自分类Dev

使用实体框架添加或更新实体的正确方法是什么

来自分类Dev

添加多行有效但未更新(C#、实体框架 6)

来自分类Dev

将实体添加到表的通用函数-实体框架6和C#

来自分类Dev

LUIS 无法编辑分层实体以添加新子项

来自分类Dev

更新实体框架的dbModel时出错

来自分类Dev

更新实体框架的dbModel时出错

来自分类Dev

在实体框架6中删除子实体时出错

来自分类Dev

实体框架添加和删除实体?

来自分类Dev

实体框架添加所有子实体

来自分类Dev

实体框架6检测新实体

来自分类Dev

实体框架6-ASP.NET筛选器-并发添加

来自分类Dev

实体框架6:添加总计的摘要行

来自分类Dev

实体框架-“从数据库更新”未添加表

来自分类Dev

无法通过实体框架添加新表

来自分类Dev

使用 Vagrant 时的实体框架添加迁移

来自分类Dev

实体框架未添加[键]

来自分类Dev

实体框架迁移添加失败

来自分类Dev

程序编辑实体改为添加

来自分类Dev

实体框架6 + SQLSpatialFunctions

来自分类Dev

实体框架更新更改

来自分类Dev

实体框架-更新记录

来自分类Dev

实体框架更新性能