Linq到SQL-更新后脏读-WCF服务
我有一个dbml文件(linq到sql)连接到我的数据库。我有一个使用通用存储库(针对每个实体)与dbml对话的经理。经理使用回购进行工作(CRUD操作)。WCF包装管理器并将其公开给外部世界(以便我的应用程序可以使用它) DB IRepositoryLinq到SQL-更新后脏读-WCF服务,wcf,web-services,linq-to-sql,Wcf,Web Services,Linq To Sql,我有一个dbml文件(linq到sql)连接到我的数据库。我有一个使用通用存储库(针对每个实体)与dbml对话的经理。经理使用回购进行工作(CRUD操作)。WCF包装管理器并将其公开给外部世界(以便我的应用程序可以使用它) DB IRepositoryIManager(IRepo,IRepo…)WCFService(IManager) 我测试过经理,每次都很好。问题在于WCF。我将读取数据(例如GetAllLocations),更新数据(例如更改位置名称),但稍后在某个随机点,我将读取脏数据。例
此外,Location实体在数据库中有一个触发器,但我排除了这一原因,因为我禁用了它,这没有任何帮助,而且管理器再次正常工作。有两个因素可能导致此问题:
- 环境事务范围的隔离级别可能不同
- WCF的一个不同之处是,通过IIS可能会导致事情并发运行
- 设置事务作用域的隔离级别
- 确保您的连接字符串启用MARS-多个活动结果集
For<MyDataContext>()
//.HybridHttpOrThreadLocalScoped()
.Use(() => new MyDataContext());
()
//.HybridHttpOrthReadLocalScope()文件
.使用(()=>newmydatacontext());
默认值是每次调用,这正是我所需要的。您建议将隔离级别设置为什么?我尝试将其设置为ReadCommitted,但在本地计算机上安装后无法启动该服务。我尝试在dbml连接字符串上启用MARS,但没有任何帮助。ReadCommitted是停止脏读的最低级别。您的服务在使用时无法启动,这表明存在其他问题。你会犯什么错误?检查事件日志感谢您的帮助,我解决了它(这是一个结构映射缓存问题,只有在使用WCF时才变得明显)。