C# 使用数据库的依赖属性

C# 使用数据库的依赖属性,c#,wpf,C#,Wpf,在WPF中,我们使用依赖属性,但我想知道是否可以在web应用程序中使用它们 例如,假设我有一个文本框的值“jack”。该名称来自数据库,所以当数据库表字段更新并将该名称更改为“john”时,该名称如何影响textbox的值,从而也更改为“john” 简短回答是的,你可以,数据来自哪里并不重要。 编写一个实现INotifyPropertyChanged的类,该类基本上称为ViewModel。这个类将包装来自数据库的数据,并在值更改时通知视图。在Web应用程序中,工作方式与WPF应用程序略有不同 在

在WPF中,我们使用依赖属性,但我想知道是否可以在web应用程序中使用它们

例如,假设我有一个文本框的值“jack”。该名称来自数据库,所以当数据库表字段更新并将该名称更改为“john”时,该名称如何影响textbox的值,从而也更改为“john”

简短回答是的,你可以,数据来自哪里并不重要。
编写一个实现
INotifyPropertyChanged
的类,该类基本上称为ViewModel。这个类将包装来自数据库的数据,并在值更改时通知视图。

在Web应用程序中,工作方式与WPF应用程序略有不同

在WebApp中,如果有请求传入,服务器将对其进行处理,然后将结果返回到客户端浏览器。如果服务器上发生了更改,服务器将无法让客户端知道这一点,直到新的请求传入并且服务器可以返回新的响应

ASP.NET具有数据绑定和数据源的概念。例如,您可以配置SqlDataSource以执行查询并将结果绑定到网格或列表控件。这将在用户加载页面时执行


当服务器上发生更改时自动刷新数据需要客户端不断轮询服务器以查看是否有更改(使用AJAX以异步方式),然后在浏览器中更新HTML。这是你在Twitter或LinkedIn等应用程序中看到的情况,但这与你在WFP应用程序中习惯的概念完全不同。

好主意-但你忽略了一些主要问题

依赖属性本质上是一个内存中的对象,各种事物都订阅它以进行更改


要对数据库执行同样的操作,您需要一种方式(向应用程序)传达该更改。由于这些都是进程外的,因此必须进行一些跨进程甚至跨服务器/网络的调用。所有这些都需要由您手动定义和构造。

web上没有wpf中的数据绑定。DB不实现用于数据更改的接口。 您可以使用DBs存储过程(编译)并将触发器上的数据更改传递给web实例。从那时起,可以通过Ajax更新视图/网页

这将是“推送”方法,这当然是更好的解决方案,但更难实现

您还可以按时间间隔执行“数据池”操作,并相应地更新页面,这很容易实现,但资源vise非常糟糕

致以最良好的祝愿,
P.

谢谢你漂亮的回答,但正如姆本所说,我可以用wpf来做,对吗?不在web应用程序中。在WPF中,这是可能的。SqlDependency之类的东西可以帮助您跟踪数据库更改,然后将这些更改推送到WPF表单。在Web应用程序中,您的代码和客户机之间没有直接联系,因此默认情况下,这种情况在Web应用程序中是不可能的。但是,您可以使用AJAX或WebSocket之类的工具来创建此行为,但这并不像WPF那么简单。在web应用程序中如何做到这一点?我误解了这个问题,我认为它们来自WebAApp