我正在构建一个新的应用程序架构,我需要你的建议。我们有一个托管为SQL Azure的中央MSSQL服务器数据库。需要从许多不同的应用程序访问此数据库,其中大多数是在windows azure中托管的Web应用程序,其中几个是winforms应用程序。
使用ADO.Net直接访问Web应用程序的数据库。对于winforms应用程序,wcf数据服务技术以及用于安全性的客户端身份验证服务似乎令人印象深刻。
我需要知道这种混合模式的数据库访问是否有效?换句话说,如果使用混合的ADO.Net和实体框架的应用程序命中数据库完整性,将会保持数据库完整性。
提前致谢。
答案 0 :(得分:1)
如果使用EntityFramework查询数据库,它将缓存数据,直到您调用SaveChanges()。如果在此期间修改数据库(例如,使用普通的旧ADO.NET),则存在使用实体框架的应用程序覆盖来自数据库的数据的风险。要防止这种情况,您需要使用并发令牌。您可以在此处找到一些详细信息:http://social.technet.microsoft.com/wiki/contents/articles/3866.aspx 请注意,当您开始使用并发令牌时,您需要了解可能需要处理的并发异常。您可以查看此博客文章http://blogs.msdn.com/b/rickandy/archive/2011/02/17/handling-optimistic-concurrency-exception-with-ef-and-mvc-3.aspx以获取一些想法。 WCF数据服务使用ETag进行并发(http://blogs.msdn.com/b/astoriateam/archive/2008/04/22/optimistic-concurrency-data-services.aspx)但如果您在此处可能不需要执行任何操作您在EF模型中为通过WCF数据服务公开的数据库设置并发。
答案 1 :(得分:1)
我们将继续使用WCF RIA服务。它们似乎适用于提供开箱即用数据访问层的多种客户端类型。