c# - 如何使用 LINQ to SQL 类的 PropertyChangedEventHandler 进行即时更新?

标签 c# wpf linq linq-to-sql

在我的 WPF 应用程序中,我实现了 LINQ to SQL 查询,该查询填充与 ListView 连接的 Observable 集合。正是在这个方法中,我可以从某个地方调用它,它工作正常:

private void VisualizeAllShows()
{

    MyfirstdbDataContext context = new MyfirstdbDataContext();
    _ShowQuCollection.Clear();

    var sh = from p in context.Shows select p;

    foreach (var p in sh)  
      _ShowCollection.Add(new ShowsQu
        {
            Date = p.Date, 
            Time = p.Time, 
            Description = p.Description 
        });                 
}

现在我需要在数据库表数据更改时自动进行此更新。

我是否应该为此目的在我的 LINQ to SQL 类中使用此公共(public)事件:

public event PropertyChangedEventHandler PropertyChanged;

如果是这样,请问如何使用会因数据更改而触发的事件处理程序? 如果不是,我应该在哪里寻找正确的方法来做到这一点?

最佳答案

据我所知,数据库引擎不会通知您的应用程序对 SQL 服务器上的表进行更新。最好的办法是在 SQL Server 上使用 CLR 集成来添加它,请参阅#3。

这些是我能想到的选项: 1.轮询变化通过反复查询数据库来检查变化。 2. 我已经看到用于此的 SqlCacheDependancy,但从我读到的内容来看,它是 CPU 密集型的。 3. 将 CLR 程序集添加到在触发器中实现了代码的 SQL Server,以便更新然后运行 ​​.NET 代码,通知您的应用程序更新。如果你能让它工作,它可能是最有效的。我不确定在为 SQL Server 上的 CLR 集成编写 .NET 代码时有什么限制。 IE。它是否会让您连接到外部应用程序。您的通信方式可能因任何网络技术、TCP/IP、WCF、远程处理等而异。

关于c# - 如何使用 LINQ to SQL 类的 PropertyChangedEventHandler 进行即时更新?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1991455/

相关文章:

c# - 更新 ConcurrentDictionary<string, Tuple<string, string>> 中的值

c# - datagridview 中一个单元格中的多行

c# - 我应该如何将托管的 DirectX 程序迁移到 Windows 7?

c# - 将值传递给 IValueConverter

c# - 在 wpf 中以编程方式更改字体系列

c# - LINQ to JSON - 查询对象或数组

c# - 从 XML 文件获取 ID 属性列表 C#

c# - 检查文件是否存在并且在 C# 中具有正确的命名标准

c# - C# asp.net Core 中的 Image 类型等效于什么?

c# - WPF RichTextBox 拼写检查 ComException