问题标签 [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 投票
3 回答
2421 浏览

.net - INotifyPropertyChanging 和验证:我什么时候提出 PropertyChanging?

INotifyPropertyChanged 是相当不言自明的,我想我很清楚何时提高那个(即当我完成更新值时)。
如果我实现 INotifyPropertyChanging,我倾向于在进入更改对象状态的设置器或其他方法后立即引发事件,然后继续进行可能发生的任何防护和验证。

因此,我将此事件视为属性可能更改但尚未更改的通知,并且可能实际上并未成功完成更改。

如果对象的使用者正在使用此属性(例如,假设 LINQ to SQL 使用事件进行更改跟踪),我是否应该推迟并仅在我确认我得到的值是好的并且只引发事件时对象的状态是否对更改有效?

此事件的合同是什么,订阅者会有什么副作用?

0 投票
7 回答
2198 浏览

.net - .NET 世界中的 ORM 和 SOA

根据我的经验,.NET 的主要 ORM 框架(NHibernateLinqToSqlEntity Framework)在跟踪加载的对象时效果最好。这适用于简单的客户端-服务器应用程序,但是当在面向服务的架构中使用具有 Web 服务的三层或更多层架构时,这是不可能的。最终,通过编写大量代码自己进行跟踪可以完成,但 ORM 不应该简化数据库访问吗?

在面向服务的架构中使用 ORM 的想法真的好吗?

0 投票
1 回答
407 浏览

asp.net - 如何使用 ADO.NET 数据服务实现“获取最新更改的项目”?

假设我有一个实体列表(例如,TODO 项目列表),多个用户可以同时更改、删除和添加这些实体列表。

因此,为了维护所有客户端之间的同步列表,我希望每个客户端(基于 AJAX)每 xx 秒请求一次更改。由于列表可能会变得很长,我不想每次都做一个完整的请求,而只要求更改的项目(项目可以更新、删除或新建)。

是否可以使用 ADO.NET 数据服务?如果是这样,如果我在服务器上使用实体框架,我该如何实现它?

我已经考虑使用 ASP.NETs 缓存在将更改操作提交到数据服务时存储更改项,并且有一个自定义 Web 方法可以返回自特定客户端上次请求以来的最新更改(可以通过客户端跟踪请求ASP.NETs 会话对象)。但是,我不知道如何在结果集中指示单个项目的更改状态(例如,删除或更新或插入)。

一个很好的解决方案还可以让客户端在与服务器的同一次往返中请求对许多实体进行更改。

任何输入都会很受欢迎。

最好的问候,埃吉尔。

0 投票
4 回答
10516 浏览

mysql - MySQL 数据库更改跟踪

您使用哪些工具来跟踪 MySQL 数据库中的更改?
目前我在一个项目中,我们使用纯文本文件(通过 SVN 控制版本),我们在对数据库进行更改时手动添加 SQL 语句。
许多更改时不时地神奇地消失,我们现在正在寻找一种更好的方法来更改跟踪我们的数据库。

编辑:
我忘了提到一件事,我们正在使用存储过程和函数,所以我们不仅要跟踪/版本控制上的更改的数据库结构。

0 投票
2 回答
1405 浏览

nhibernate - 在持久化之前使用 NHibernate 确定哪些字段已更新(用于验证目的)

在对我的业务实体进行持久更新之前,我需要执行验证检查以确定哪些属性已更改。例如,某些字段只能在“状态”属性具有特定值时更新。例如,当 Order 实体的 Status 为 finalized 时,只能更新 notes(字符串)字段。这种事情是否可以使用 NHibernate,或者我应该自己跟踪业务实体中的更改?

0 投票
1 回答
4049 浏览

sql-server-2008 - SQL 2008 Express 是否支持更改跟踪

由于 MSDN 上没有这方面的文档,我不得不在这里问。

Express 版本是否支持与其他版本相同的更改跟踪功能?

谢谢

雷比

0 投票
3 回答
1057 浏览

.net - ADO.NET 框架更改跟踪

我只是想问是否有办法拒绝对 ADO.NET Framework 模型及其关系所做的所有更改? 实体框架中的审计描述了一种恢复单个实体原始值的方法。但这对于整个数据库中所有未保存的更改是否可行?

0 投票
1 回答
1058 浏览

c# - 如何在 NHibernate 中进行通用字段和组件级别的更改跟踪?

在我的应用程序中,我需要对几种不同类型的实体进行字段级更改跟踪。我已经对此进行了谷歌搜索,只能提出关于执行简单的“插入日期”和“更新日期”审计跟踪的示例,您只需修改已经持久化的实体上的字段。我的要求更复杂,因为:

  1. 我需要创建表示更改的新实体,而不仅仅是修改正在保存的实体上的字段(与我发现的插入日期、更新日期示例一样)
  2. 我需要在更新跟踪实体的同一事务中将这些新实体保存到数据库
  3. 我需要跟踪附加到被跟踪实体的 ValueObjects 集合的更改
  4. 我不想为每个被跟踪的实体编写单独的日志记录代码

示例代码:

每当帐户或计算机对象的任何值发生更改或与计算机对象关联的 IPAddresses 列表发生更改时,我都需要创建并保存这些实体更改记录:

每个被跟踪实体都实现了 ITrackChanges 标记接口,并且每个值对象都继承自 ValueObject 基类。值对象被映射为 NHibernate 中的组件。

作为我希望得到的最终结果的示例,如果我使用 Id 1 更新计算机对象并将 AssetTag 从“ABC123”更改为“ABC124”并将 IP 地址列表从 {“1.2.3.4 " } 到 { "1.2.3.4" , "1.2.3.5" },我应该得到 2 EntityChange 记录:

关于实现这一点的最佳方法的任何想法?从我对文档的阅读来看,我似乎需要编写一个拦截器和/或事件侦听器,但除了仅修改正在更新的实体的示例之外,我无法找到任何示例。任何答案都绝对欢迎示例代码。

假设这应该是 NHibernate 支持的东西,我错了吗?我能够在以前使用 LLBLGen 作为 ORM 的应用程序中实现这一点,但这是我第一次不得不在使用 NHibernate 的应用程序中实现这一点。

0 投票
3 回答
182 浏览

php - 保留用户更改的旧数据

我有一个users包含以下字段的表:userid, phone, and address. 由于这是用户数据,我让用户随时更改它们。问题是我想跟踪这些更改并保留旧数据。以下是我考虑的一些想法:

  • 将新数据附加到旧数据并使用像管道这样的分隔符。检索该字段时,我会检查该分隔符是否存在,如果存在,则将其后面的字符作为新数据获取。(感觉很麻烦,感觉不对)

  • changes使用以下字段设置不同的表: userid, fieldname, fieldcontent。当/如果用户更改数据(任何数据)时,我会将事件记录在用户的用户 ID 下的这个单独的表中,以及字段的名称/ID 和字段的旧内容,然后我现在可以覆盖他的旧数据在users与新。如果我想查找此用户所做的所有更改,我会changes按他的用户 ID 搜索表。问题是我将所有数据更改(所有字段)混合到一个表中,因此fieldcontent字段changes必须是文本以适应不同的字段类型。这似乎仍然比第一个想法好,但仍然不确定我是否做对了。

还有哪些其他想法或已知的最佳实践来保留旧数据?

提前致谢

0 投票
2 回答
790 浏览

c# - WCF 服务之间的业务对象同步

我正在将我的架构从耦合一迁移到松耦合的 SOA (WCF)。我有几个相互通信的服务。您将如何在服务之间同步业务实例?

我在这里看到两种情况:

  1. 所有的业务对象都只在一个服务中创建,我们称之为MainService,它是唯一可以访问对对象所做的所有更改的服务。该服务负责数据库中对象的更新。对象的任何更新都会引发通知。其他服务注册到他们需要的事件并得到相应的通知。我称之为集中式方法。

    + 更改完成后立即通知服务
    - 服务之间的大量调用。
    - 更多的耦合。

  2. 所有服务只是加载他们需要的对象并定期监视数据库以了解对它们所做的任何更改。我的想法是使用 sql server 2008 的更改跟踪来检测对对象所做的任何更改。

    + 更少的流量和服务之间可能的通信问题。
    + 较少耦合
    - 由于定期监测而延迟。

那么,您对此有何回答?(如果你有 3、4 等……那也很好)