代码之家  ›  专栏  ›  技术社区  ›  Golnaz Saraji

在SQL Server中获取更改数据时,对IIS重新启动的依赖性错误

  •  0
  • Golnaz Saraji  · 技术社区  · 5 年前

    我正在研究一个ASP.NET具有实体框架的webforms应用程序。另外,对于某些报表,它使用了一个dll,其中我们有显式查询从sqlserver(比如ADO)获取记录。

    问题是当我改变一个列,比如 ParentID

    我怎样才能解决这个问题?

    0 回复  |  直到 5 年前
        1
  •  0
  •   allmhuran    5 年前

    当您对SQLServer(或任何数据库)运行查询时,可以说,您看到的结果不是“数据库中”的数据。查询返回一个 复制

    一旦检索到数据的查询完成,客户机中的数据和数据库中的数据之间就不再有任何链接。两者之间没有连续的“实时”连接,即使您的实际数据库连接仍处于打开状态。数据库连接仅仅是一种向服务器发送查询并将数据副本发送回服务器的方法。

    如果您希望某些用户界面中的数据与数据库中实际存在的数据保持完全同步,则有一个很难解决的问题。要做到这一点没有“简单”的方法。或者更准确地说,没有简单或 这样做的方式。

    这对你来说可能很奇怪。你在想“为什么不呢?为什么它不直接向我展示它们实际存在的价值观?”。原因是,这些系统需要能够支持许多用户——通常一次有数千人——他们都在读数据库,也在写数据库。假设有人正在更新数据库中的数据,但随后他们回滚了事务。您是否应该看到正在修改但未提交的数据?如果两个用户试图同时更新“相同”的数据怎么办?各种并发问题都会起作用,这基本上可以归结为关于锁定的问题。

    您在这里遇到的是多线程环境的一个基本原则,这一原则转化为具有多个客户端的系统:数据不能由多个用户同时直接访问。相反,你给每个人一个他们自己不变的副本。

    web服务器和客户端的web浏览器之间的任何链接,以及 当然 web浏览器和数据库之间没有链接。

    归根结底,这是计算机科学中的“难题”之一。您想知道如何告诉客户机使其“缓存”失效,并刷新其本地数据。NET提供了一些机制来使用SQLServer来实现这一点,但它们都是技术性的。其中一个是 query notifications