问题标签 [change-tracking]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
839 浏览

c# - DataServiceCollection:撤消删除现有项目

我正在查看 WCF 数据服务,特别是在DataServiceCollection.

让我们考虑一个应用程序中的 undo 场景,它管理博客和博客条目(每个博客都有许多博客条目)。我正在测试两种撤消操作:

  • 添加了新的博客条目(撤消操作是删除条目);
  • 现有的博客条目被删除(撤消操作是添加条目)。

这是代码示例:

第一个撤消操作(添加新条目,然后在撤消时将其删除)工作正常。
第二个撤消操作(删除现有条目,然后在撤消时添加它)不对称地工作。

这一行:

将相应的实体标记为Deleted上下文的更改跟踪器,这是正确的。但是这一行:

对更改跟踪器不做任何事情(existingEntry保持Deleted状态),但是,当然,将项目添加到集合中。

因此,当SaveChanges被调用时,该条目将从数据库中删除,但它仍保留在客户端的集合中。

我试图通过在DataServiceCollection构造函数中设置回调来手动处理此撤消,但在这里我得到了相同的不对称行为 -collectionChangedCallback当我尝试添加标记为Deleted.

我究竟做错了什么?
如何“恢复”已删除的项目?

0 投票
2 回答
1797 浏览

wcf - WCF 数据服务更改跟踪:如何取消保存更改并恢复为对象的原始值

我有一个包装实体框架 4 数据模型的 WCF 数据服务。我正在使用 WCF 数据服务客户端库将 WPF 客户端连接到服务。

WCF 数据服务中是否可以撤消/取消对跟踪对象的更改?

场景:在 UI 中,我允许用户编辑对象。我有保存和取消按钮。如果用户选择保存,我在我的 WCF 上下文中调用 SaveChanges(),更改将通过 WCF 服务发送到数据库。如果用户单击取消,我想撤消更改并恢复为当前对象的原始属性值。

我知道 WCF 数据服务客户端库内置了更改跟踪 - 但我找不到任何方法来访问此信息。

在实体框架中,上下文支持 Refresh 方法,您可以指定 RefreshMode.StoreWins 并传入对象 - 这将有效地取消/撤消任何更改。记录在这里:http: //msdn.microsoft.com/en-us/library/bb896255.aspx

关于如何在我的客户端应用程序中的 WCF DataServices 中实现相同功能的任何建议?

克里斯欢呼

0 投票
1 回答
478 浏览

joomla - 如何添加第 3 方点击代码

我的客户向我提供了跟踪代码,用于跟踪我放置在我的 joomla 网站上的页面外观设计的印象和点击。我已将此代码添加到显示图形的模块中,但客户端报告未发生跟踪。我可以在代码中看到一个时间戳标记,但不确定它是如何真正起作用的。

0 投票
1 回答
1508 浏览

c# - 在覆盖的 SaveChanges 方法中使用 ChangeTracker 时引发 ArgumentException

我覆盖了 SaveChanges 方法来审核 EntityFramework 中的更改。在我尝试更新关联对象之前,它工作正常。当我尝试更新关联对象时,我得到 ArgumentException。我发现从 ChangeTracker 读取实体后会引发异常。如果我在覆盖的 SaveChanges 方法中对 ChangeTracker 不执行任何操作,则对象将成功更新。我使用 EntityFramework 5.0。

你不知道这是一个错误还是我做错了什么?

抛出异常:

System.ArgumentException 被捕获 HResult=-2147024809
Message=定义 EntityKey 的键值对不能为 null 或空。参数名称:记录 Source=System.Data.Entity
ParamName=record StackTrace:在 System.Data.EntityKey.GetKeyValues(EntitySet entitySet, IExtendedDataRecord record, String[]& keyNames, Object& singletonKeyValue, Object[]&compositeKeyValues) at System.Data .EntityKey..ctor(EntitySet entitySet, IExtendedDataRecord 记录) 在 System.Data.Objects.ObjectStateManager.PerformDelete(IList1 entries) at System.Data.Objects.ObjectStateManager.DetectChanges() at System.Data.Objects.ObjectContext.DetectChanges() at System.Data.Entity.Internal.InternalContext.DetectChanges(Boolean force) at System.Data.Entity.Internal.InternalContext.GetStateEntries(Func2 谓词)在 System.Data.Entity.Infrastructure.DbChangeTracker.Entries() 的 System.Data.Entity.Internal.InternalContext.GetStateEntries() 在 System.Data.Entity.DbContext.GetValidationErrors() 在 System.Data.Entity。 Internal.InternalContext.SaveChanges() 在 System.Data.Entity.Internal.LazyInternalContext.SaveChanges() 在 System.Data.Entity.DbContext.SaveChanges() 在 EFTest2.BlogContext.SaveChanges() 在 c:\Projects\EF22\EFTest2Solution \EFTest2\Context.cs:EFTest2.Program.Main(String[] args) 中的第 37 行:\Projects\EF22\EFTest2Solution\EFTest2\Program.cs:第 42 行

我的代码是这样的:Program.cs

模型

语境:

配置

0 投票
0 回答
640 浏览

entity-framework - EF5 中具有多个 DbContext 实例的更改通知 - 是否记录在案,在哪里?

我正在开发一个使用 EF5 作为 ORM 的应用程序。

在开始之前,我需要创建测试以确认 EF5 中的所有内容都正常工作。我测试的一件事是对 UnitOfWork 的支持。我通过创建多个 DbContext 实例来模拟多个工作单元(例如在 IOC 中将 DbContext 生命周期设置为 PerWebRequest 时的多个请求)。

我在那里遇到了一个惊喜,因为 EF5 似乎使用了SqlDependency之类的东西,因为我的情况如下:

我正在尝试查找文档,但 EF 项目页面和博客和谷歌都没有帮助我。这不是旧版 EF 的工作方式,没有开箱即用的功能来通知其他上下文(即参见这个问题)。如果这实现了很好,但我需要说明它的文档,因为我担心我不能依赖这个特性,而且我不能依赖知道如果其他工作单元完成,我的上下文中的数据不会改变,就像这里显然一样。

0 投票
1 回答
1487 浏览

sql - 在忽略单个列的同时使用更改跟踪

目前,我正在使用 SQL Server 2008 Change Tracking 跟踪对所有表的更改。开箱即用,一切正常。但是,另一个复杂性是读取这些更改的应用程序需要对正在跟踪的每个表上的日期列进行更改。我的应用程序中的更改就像触发器告诉我需要发送额外的数据。如果不加以管理,这可能会导致无限循环。

每次读取更改后都会填写一个发送日期。

是否可以在数据库/表级别配置以忽略表上的单个列,以便在修改该列时不跟踪版本/更改?

0 投票
1 回答
414 浏览

entity-framework - 基于代理的更改跟踪,POCO 对象中的属性未更新

我在我的 ASP.NET MVC 应用程序中使用 EF5 代码优先和基于代理的更改跟踪。我的一个域类包含一个非常频繁更新的数字属性。出于这个原因,这个属性没有使用框架持久化到数据库中:

我面临的问题是属性的值不会跨会话更新。根据内部逻辑,我的 API 控制器要么增加上述值,要么减少它,如下所示:

或者

其中 myObj 是在每个会话中通过 LINQ 从上下文中检索的代理对象:

当我在增加/减少 myObj.CurrentSessions 之后检查它的值时,它确实被更新了,但是在下一个服务器请求时,当 myObj 再次被检索时,CurrentSessions 始终具有其初始值,为零。

如何确保在 POCO 实体中更新属性值而不扫描整个上下文以进行更改?

0 投票
1 回答
314 浏览

java - 使用 Apache Commons 配置跟踪更改

对于即将到来的项目,我计划使用 Apache Commons Configuration。

我想使用该库从/向数据库读取和写入给定应用程序的所有配置。

我们要求跟踪所有配置更改(或配置版本)。此更改跟踪也应存储在数据库中。

配置更改不会经常发生。

我想知道实现此更改跟踪功能的最佳方法是什么?Apache Commons 本身是否有一些支持?是否有另一个适合的框架/库?

0 投票
1 回答
2044 浏览

sql-server - SQL Server 的更改跟踪/更改数据捕获与没有主键的表?

我必须监视数据库中的一个表的更改并将它们复制到另一个数据库中的某个表。由于某种原因,我无法修改原始数据库的结构,因此无法使用触发器或创建约束等。更改跟踪似乎是我需要的理想解决方案,但有些表没有主键已定义,因此我无法使用它。至于变更数据捕获,这里 - http://msdn.microsoft.com/en-us/library/bb522511.aspx是这样写的:

.

“要启用网络跟踪,源表必须具有主键或唯一索引。”

所以基本上,似乎有类似的问题。

这种情况有什么解决方法吗?或者,也许我错过了什么?

0 投票
1 回答
662 浏览

change-tracking - 在 TFS 2012 中实现变更跟踪

我已经在我的服务器上安装了TFS2012,现在我需要实现更改跟踪。我已经解释了下面的细节。

更改跟踪的整个想法是,如果我更改 PBI/需求,则所有链接的工作项/错误/障碍状态都应该更改,或者 TFS 应该以某种方式通知我。