问题标签 [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.
database - 在我的数据库 (SQL Server 2008) 上创建非聚集索引会中断更改跟踪吗?
我一直在调查我的数据库 (SQL Server 2008) 的一些性能问题。SQL Management Studio 建议我使用此代码添加一个非聚集索引,这将减少 90% 以上的处理时间。
但是,我担心使用此代码会破坏对我的数据库的更改跟踪,这对于保持完整是必不可少的。
在另一个数据库中测试了代码之后似乎没问题,结果是下一次我同步(从我偶尔连接的客户端)尽管没有实际上传或下载任何额外数据,但处理时间要长得多,随后的同步恢复到正常速度.
这段代码可以安全运行吗?
linq-to-sql - Linq to SQL:在提交到数据库之前修改命令
Linq to SQL 中是否有一个钩子可以让我在命令发送到数据库之前手动修改它?
具体来说,我试图在向WITH CHANGE_TRACKING_CONTEXT(@contextData)
数据库应用插入/更新/删除时引入语法,以便能够添加针对更改跟踪的附加信息,例如发起更改的用户(这是一个 Web 应用程序使用 SQL 身份验证)。
只需在 CommandText 的开头插入此语法,同时将一个附加参数(@contextData)
添加到 SqlCommand 对象,该对象将包含附加语句的数据。
提前致谢。
c# - 使用 LINQ-to-SQL 时透明记录对象更改的最佳方法是什么?
我跟踪对对象所做的所有更改,以便用户可以查看和回滚到数据库中任何项目的任何先前版本。
历史数据库表如下所示:
目前,每当用户填写表格时,我都会记录这些更改,因此我可以获得对象新旧状态的完整信息。
但是,现在我需要从code中获取这些历史数据记录。当使用LINQ-to-SQL时,它需要透明地工作,即开发人员不应该做任何额外的工作,即以下代码也应该导致写入历史表:
我可以想象我可以通过两种方式实现这一点:
- 覆盖 db.SubmitChanges()但问题是我如何访问正在等待更改的对象。
- 将我的日志记录方法附加到OnSubmitChanges事件,但我还没有找到解决方案
有没有人解决过这个问题或知道解决这个问题的好方法?
sql - 跟踪对象字段变化的最佳架构是什么?
我们有一个构建在 SQL 数据库之上的 Web 应用程序。几种不同类型的对象可以添加注释,其中一些对象需要字段级跟踪,类似于在大多数问题跟踪系统上跟踪字段更改的方式(例如状态、分配、优先级)。我们想显示更改是谁,之前的值是什么,以及新的值是什么。
在纯设计级别,跟踪通用表中任何对象的每个更改是最直接的,其中列对象类型、对象主键、进行更改的用户的主键、字段名称和旧值和新值。在我们的例子中,如果用户在进行更改时输入了评论,这些也可以有一个评论 ID。
然而,随着这些数据的增长速度有多快,这是最好的架构吗?通常采用哪些方法将此类功能添加到已经大规模的应用程序中?
[编辑]我开始对这个问题进行赏金主要是因为我想特别找出在处理规模方面最好的架构是什么。Tom H. 的回答提供了丰富的信息,但推荐的解决方案似乎相当低效(对象的每个新状态都有一个新行,即使许多列没有改变)并且鉴于我们必须是还能够跟踪对用户创建的字段的更改。特别是,我可能会接受一个可以解释常见问题跟踪系统(JIRA 或类似系统)如何实现这一点的答案。
sql-server-2008 - SQL Server 2008 更改跟踪
我们希望使用更改跟踪在 SQL Server 2008 Enterprise/Standard 实例和 Express 2008 实例之间实现双向同步。
当我们读取远程更改,然后在本地服务器上进行调整时,我们如何才能使这些语句不被更改跟踪?我预见到一台服务器跟踪更改的无限循环,然后另一台进行更改并跟踪更改,另一台服务器进行更改,等等。
在执行同步操作时禁用该表上的更改跟踪可能会错过该表上其他进程的更改,所以我认为这不是答案。
有没有办法在每个语句或每个事务的基础上禁用更改跟踪?
编辑:我发现了 WITH CHANGE_TRACKING_CONTEXT 命令,因此我可以使用它来指定同步代码何时执行更改,以便同步代码本身不会选择并使用它们。
.net - 在 Linq to SQL 中覆盖实体缓存/更改跟踪行为
我认为最初的问题可能过于冗长,包含太多不必要的细节,所以这是我简化的尝试。
我正在寻找一种方法来执行以下任何操作。我只需要做一个,而不是全部。如果有人知道其中之一的答案,请回复。那么,是否可以在 Linq to SQL 中执行以下任何操作:
DataContext
将实体从通孔中拉出ExecuteQuery
还是ExecuteMethodCall
不跟踪这些实体?调用
ExecuteQuery
或ExecuteMethodCall
保证我总是收到从数据库检索到的结果的新副本,即使这些实体已经被检索并且已经在身份缓存中?指示 Linq to SQL 不要对特定实体类型执行任何更改跟踪 - 但仍允许对其他类型进行更改跟踪?
限制:
Refresh
方法是不可能的;实体的数量很大,这将成为性能灾难。我不能简单地设置
ObjectTrackingEnabled
为false
,因为DataContext
不允许true
在执行查询后将其设置回,并且我确实需要跟踪一些实体。我也不能扔掉原来的
DataContext
并使用一个新的;我需要能够在交易过程中做到这一点。
这开始成为一个严重的问题,我真的认为默认行为是错误的。如果我执行临时查询或存储过程,我希望收到的结果与所述查询返回的结果完全相同。这才有意义;如果我想要旧的、陈旧的实体,我为什么要返回数据库来获取它们?
目前,我的解决方法是(a)DataContext
专门为查询创建一个新的并覆盖事务隔离级别,或者(b)将返回类型设置为在各个方面都与实体相同但没有[Table]
属性,并使用 AutoMapper 将其映射到原始实体。这两个似乎都是可怕的黑客。
非常感谢任何人对这个难题的任何建议。
wcf - 实体框架:使用 POCO 方法在 SOA 中进行变更跟踪
在我们的分层应用程序中,我们通过 WCF 调用访问数据库。我们根据请求创建和处理上下文。我们也在使用 POCO 方法。
我的问题是,在纯 POCO 模型(完全持久的无知 POCO)中,是否可以在我们为每个请求创建和处理上下文时跟踪更改(因为先前的上下文是在该服务调用中处理的)?如果是,EF 如何处理这种情况?据我所知,有两种机制(基于快照的更改跟踪和基于通知的代理更改跟踪)将无法处理这个问题?如果不是,我们应该如何处理上下文以便我们能够跟踪更改?
sql - 关于 Sql Server 2008 中更改跟踪的建议
我的客户正在寻找一种方法来对应用程序进行完整的审计跟踪(所有表上历史数据的完整视图)。
除了使用具有表副本或存储字段名称、字段值、修改者、修改者等的老式方法之外,我正在研究使用 Sql Server 2008 更改跟踪。在相同的 msdn
上
找到了一篇How-To 文章
有没有人使用(或做过 POC)Sql Server 2008 更改跟踪功能并发现它值得。另外,如果可能的话,请说明您想要从中得到什么以及您发现/得出的结论。欢迎任何相同的提示。
[编辑]
一个星期了还是没有答案!
nhibernate - 使用 NHibernate 设置上次修改和修改者的最佳实践是什么?
在我的应用程序中,我们需要捕获创建和修改记录的时间以及执行这些操作的用户。所以我可能有一个类似的对象:
在 NHibernate 中处理这些的最佳实践是什么?通过使用类似于此处描述的拦截器?
sql-server-2008 - 同步和不同步 Sql Server 2008 更改跟踪
我一直坚持使用没有此机制的 2005 年启用更改跟踪的 Sql server 2008 同步。
请您指出正确的方向,我该如何处理。谢谢,