gpt4 book ai didi

c# - 观察 sql 数据库中的表新记录

转载 作者:可可西里 更新时间:2023-11-01 08:27:00 25 4
gpt4 key购买 nike

我在 Windows 应用程序中使用 EF,我希望我的应用程序在某个表中插入新记录时执行一些任务“这些新记录将由使用相同数据库的网站插入”
我的问题是如何查看此表的更改并在出现新记录时得到通知,在这种情况下 EF 可以帮助我吗?

更新:我使用了 SqlDependency 类 并在数据库中使用了它

ALTER DATABASE UrDb SET ENABLE_BROKER

还在数据库中创建了一个服务和一个队列http://screencast.com/t/vrOjJbA1y但我从来没有收到来 self 的 Windows 应用程序的通知。
此外,当我在 sql server 中打开队列时,它始终为空 http://screencast.com/t/05UPDIwC8ck接缝有问题,但我不知道。

最佳答案

这是我的建议:

  1. 如果您能够将重复表添加到数据库,那么这是一个解决方案。您有 table1table2(table1 的副本)。当您向 table1 插入新记录时,您可以将它们与 table2 中的现有记录进行比较,从而找到新记录。比较后,您应该将所有新记录添加到 table2。这是某种同步。这可以通过存储过程或以编程方式完成。

  2. 您不需要任何其他表格。您可以将所有数据存储在您的应用程序缓存中,并在一段时间内(例如 5 秒)检查是否有任何新事件,这些事件不存在于您的缓存中。如果它们不存在 - 在您的日志或其他地方通知它们并将它们添加到缓存中。但是如果记录太多,处理时间会大大增加+内存消耗。

  3. 如果您能够更改数据库,那么您可以向表中添加类似“isNew”的列。当新数据来自网站时,该列将为“真”,您的程序可以跟踪这一点,并在处理后为每条记录将此标志设置为假。 (如果网站不能设置这个flag,可以使用SQL TRIGGER AFTER INSERT设置flag值为true,如果是第三方网站根本不知道这个功能或者你不想在那里改变任何东西)

  4. 这是一篇关于 EF 更改跟踪的文章: http://blogs.msdn.com/b/adonet/archive/2009/06/10/poco-in-the-entity-framework-part-3-change-tracking-with-poco.aspx

但问题是您应该通过 EF 检查整个表的更改,这会影响您的应用程序性能。

以下是有关 SQL Server 端更改跟踪和实现概念的有用信息: http://www.mssqltips.com/sqlservertip/1819/using-change-tracking-in-sql-server-2008/ http://msdn.microsoft.com/en-us/library/bb933994.aspx

关于c# - 观察 sql 数据库中的表新记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15225147/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com