- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我们有一个带有更新方法的 WCF 服务,用于更新数据库中的客户。
此方法从客户端获取一个分离的实体。
void UpdtaeCustomer(Customer detachedCustomer);
context.CustomerSet.Attach(detachedCustomer);
context.ObjectStateManager.ChangeObjectState(detachedCustomer, entityState.Modified);
context.SaveChanges();
Customer customer = context.GetObjectByKey(detachedCustomer.EntityKey);
context.ApplyCurrentValues<Customer>("CustomerSet", detachedCustomer);
context.SaveChanges();
最佳答案
使用第一种方法。对分离实体使用第二种方法没有普遍优势,相反它会使事情变得更糟。
假设您使用时间戳。时间戳是表示行版本的特殊 DB 类型。每次数据库中的记录更改时,时间戳都会自动增加。时间戳用于并发检查,当与 EF 一起使用时,它被处理为 Computed
柱子。每次 EF 想要更新记录时,它都会将数据库中的时间戳与您在加载对象时检索到的时间戳进行比较(必须在您的实体中传输到客户端并返回)。如果时间戳相同,则保存记录。如果它们不同,则抛出异常。
这两种方法之间的区别在于,第一种方法使用来自分离对象的时间戳,而第二种方法使用来自加载对象的时间戳。原因是计算列。无法在应用程序中更新计算值。
关于entity-framework-4 - Entity Framework 4 - ApplyCurrentValues<TEntity> 与 ObjectStateManager.ChangeObjectState,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5544849/
使用带有通用存储库模式的 EF5 和 ninject 进行依赖注入(inject),并在尝试使用我的 edmx 使用存储过程将实体更新到数据库时遇到问题。 我在 DbContextRepository
我有以下代码来添加或更新实体对象。根据我添加或更新对象的响应,通过主键查找对象。 添加记录有效,但在更新期间给出此错误消息“ObjectStateManager 中已存在具有相同键的对象。Object
基本上,我有一个表,其中包含一家公司的一些属性。这是“主”表,它们的 ID 用于许多其他表。我基本上是通过这个方法找到他们的ID: private Company currentcompany()
我有这段代码,但是我得到了异常 An object with the same key already exists in the ObjectStateManager. The ObjectStat
我遇到了 ObjectStateManager 的问题。 我正在使用 System.Data.Entity 和 System.Data.Objects 但是它没有显示 ObjectStateManag
我知道已经有人问过很多像这样的问题,但我似乎无法理解哪里出了问题。这是我的代码: [HttpGet] public ViewResult Edit(int id) { User user =
当我尝试从 Entity Framework 4 在我的数据库上下文中调用它时,出现“无法解析符号 ObjectStateManager”错误。我找不到其他人有此问题。我试过使用 System.Dat
我正在尝试将 foo 类型的实体列表插入到表 TB_FOO 中。 Public Sub Insert(ByVal _lstFoo As List(Of TB_FOO)) Try
我正在使用 EISK(员工信息入门工具包)开发应用程序。我的实体图看起来像这样 我尝试通过此代码更新应用程序表。 int apId = Convert.ToInt32(Reque
这是我在 MyObjectContext 类构造函数中所做的: ObjectStateManager.ObjectStateManagerChanged += ObjectStateManagerOb
背景 我在更新 EF 中的实体时遇到了一些问题。我不断收到此错误: “ObjectStateManager 中已存在具有相同键的对象。ObjectStateManager 无法跟踪具有相同键的多个对象
我需要从我的数据库上下文中返回一个新添加对象的列表。 我读到我必须为此目的使用 ObjectStateManager。问题是,我的数据库上下文没有 ObjectStateManager 属性。 尽管上
我有这段正常工作的代码: db.myTable.DeleteObject(myCurrent); 我得到了这个错误: The object cannot be deleted because it w
我收到此错误“无法删除该对象,因为在 ObjectStateManager 中找不到它。” 我的代码是: protected MyEntities sqlEntities; publi
这两者有什么区别,哪个更好?使用更改对象状态或 Entry().state db.ObjectStateManager.ChangeObjectState(employeeFromDB, Entity
我以为我理解 EF,尤其是在极其简单的 CRUD 方面,但我可能错了。 我有一个 ObjectContext/Repository 模式,在这个例子中是一个 VatCode 实体,它有一个增值税率的集
我正在使用 EF4.1 从我的数据库中删除一个对象: public virtual void Delete(T entity) { _entities.CreateObjectSet().Dele
当我添加多个连续数据时,SaveChanges() 方法发生错误。 异常对数据库的更改已成功提交,但更新对象上下文时出错。 ObjectContext 可能处于不一致状态。内部异常消息:AcceptC
试图在这里处理 Entity Framework ,但我遇到了一些减速带......我有一个 Get() 方法可以正常工作并且已经过测试,但是我的 Delete 方法不起作用: public s
我在屏幕截图中发现了问题: 这是程序开头的代码: public MainWindow() { InitializeComponent(); Blacko
我是一名优秀的程序员,十分优秀!