0

我有两个站点,一个管理站点,我可以在其中编辑数据库中的所有值,以及一个仅从数据库读取数据的公共站点。两个站点都有相同的 dbml 文件来处理数据库。当我插入一辆新车(网站是关于汽车的,所以所有值都与汽车相关)并且它是数据时,插入的值会立即显示在公共网站上......当我更新汽车的数据时,数据库中的值会改变立即但公共站点继续显示旧值...我读到我可以为每个查询使用 dbml 文件的新实例来强制 dbml 文件读取数据库中的值...

我在代码文件中使用以下代码执行此操作,我在其中放置了所有查询...但这不起作用...

 Public Shared AixamReader As FrontstoreAdministrationDataClassesDataContext = New FrontstoreAdministrationDataClassesDataContext

然后我在每个查询中调用 AixamReader ...

有没有更好的方法来强制 dbml 文件从数据库中获取更新的值?

4

1 回答 1

0

问题的原因不是 DBML 文件。DBML 不会读取或查询您的数据,它只是生成执行实际工作的类的基础。

因此,在实际数据库中更新/插入数据对您的 DBML 文件的影响为零。

我认为您在这里调用的 DMBL 文件实际上是 DataContext。

是的,如果您使用“旧”DataContext 进行查询,同时您的数据由另一个进程更新,它不会显示在您使用该 DataContext 执行的查询中。这也称为“陈旧的数据上下文”。

因此,为每个请求使用一个新的 DataContext,您的问题就解决了。无论如何,DataContexts 是相当轻量级的,并且被设计成以这种方式使用(每个工作单元一个新的)。

于 2012-12-23T10:22:58.980 回答