我正在使用WCF和Linq2Sql开发客户端 - 服务器应用程序。我的服务器端程序向clent提供了一个接口,该接口提供了从我的SQL Server DB读取和写入的方法。 但是当客户端向DB写入一些日期时,perhabs会等待一段时间,然后尝试从DB读取该数据,似乎没有数据写入DB,但是如果我重新启动服务器端应用程序或执行数据库分离,重新启动或重新启动sqlserver-service,然后我的客户端程序可以从服务器端程序获取该数据。 有没有人知道我的应用程序有什么问题(服务器?)以及如何解决这个问题?
更新:我正在使用Linq2Sql(调用CataContext.SubmitChanges())。
更新2:我发现,如果我在表中添加一些新行,一切都是正确的,但是当我更新某些行(对象的某些属性)然后保存更改时,更改将变为仅在重新连接到DB后显示。在更新一些属性并调用DataContext.SubmitChanges()之后,似乎没有立即刷新数据。
答案 0 :(得分:0)
我没有答案,但有一些关于如何进一步追查问题的想法。 你怎么写DB?您是否使用可能保持开放的交易?你能查询吗? 数据库中的更新未显示在您的WCF响应中?您的更新是否维护锁定并以某种方式不释放它们?您是否将消除作为原因消除了?
尝试远程调试以了解服务器上发生的情况。 WCF跟踪也可能有用。
答案 1 :(得分:0)
我遇到了完全相同的问题,还没有找到解决方案。然而,一时兴起,我转换了我的对象的get和save方法之一来读取和写入本地XML文件而不是数据库。变更立即反映在WCF响应中。所以它似乎根本不是WCF问题。
我的应用程序非常简单,我可以简单地使用XML文件和DataContractSerializer。在我采取这一重大举措之前,我真的想知道为什么会这样。
我也在使用Linq to SQL。我的下一个测试可能是使用这个应用程序,所以我可能会在第一个版本完全转储数据库。
这是一个想法...... 这与WCF服务有什么关系,也许不释放它的DataContext?我还没有测试过,但是我的DB编辑器UI通过Linq to SQL直接连接到数据库。当它保存一些数据时,是否会通知WCF的上下文?