Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 什么';这是跨多个项目重用数据库访问以确保更新时不会中断任何项目的最佳方法吗?_C#_.net_Sql Server_Linq To Sql - Fatal编程技术网

C# 什么';这是跨多个项目重用数据库访问以确保更新时不会中断任何项目的最佳方法吗?

C# 什么';这是跨多个项目重用数据库访问以确保更新时不会中断任何项目的最佳方法吗?,c#,.net,sql-server,linq-to-sql,C#,.net,Sql Server,Linq To Sql,我可能已经在多个项目中编写了4-5次相同的LINQtoSQL语句。我甚至不想粘贴它。我们将DBML文件与存储库类结合使用。我想在多个项目中共享同一个库,但我也想轻松地更新它,并确保它不会破坏任何项目。做这件事的好方法是什么?如果我必须改变我的方法,这是可以的,我不需要嫁给LINQ到SQL和DBML 我们有控制台应用程序和MVCWeb应用程序,它们以自己的DBML风格访问数据库,有时一次重大的数据库更新破坏了它们 此外,由于当前每个项目都从自身访问数据库,有时在另一台服务器上,等等。是否有可能将数

我可能已经在多个项目中编写了4-5次相同的LINQtoSQL语句。我甚至不想粘贴它。我们将DBML文件与存储库类结合使用。我想在多个项目中共享同一个库,但我也想轻松地更新它,并确保它不会破坏任何项目。做这件事的好方法是什么?如果我必须改变我的方法,这是可以的,我不需要嫁给LINQ到SQL和DBML

我们有控制台应用程序和MVCWeb应用程序,它们以自己的DBML风格访问数据库,有时一次重大的数据库更新破坏了它们

此外,由于当前每个项目都从自身访问数据库,有时在另一台服务器上,等等。是否有可能将数据库层从每个项目中删除?如果我可以通过一个我的其他应用程序可以直接使用的集中式应用程序管理所有数据库访问,而不是直接调用数据库,那么这可能有助于解决上述问题,并有助于提高安全性和数据完整性


有什么想法吗?

我处理这个问题的方法是使用WCF数据服务。我将我的数据模型和服务放在一个项目中,并将其托管在IIS上。我的其他项目(不管它们是什么)只是向URI添加一个服务引用,然后通过网络访问它所需的数据。我的数据库工作都是在服务上进行的,我的单个项目根本不涉及数据库——他们甚至不知道数据库存在

这是相当好的工作,但有一些“陷阱”与WCF。您甚至可以创建“WebGet”方法,通过服务公开常用的方法


如果您想查看一些示例代码,请告诉我:-)

好吧,这取决于您拥有多少数据以及您如何处理这些数据,在某些情况下,这种解决方案可能是真正的性能瓶颈(不是我的测试,也不确定它有多真实:,但我的经验表明,存在性能问题,只是从来没有测量过实际值),虽然从架构的角度来看,这看起来不错。是的,当然你必须考虑到性能,尤其是在互联网上。我在相对较小的内部应用程序中使用了这种方法。关于不破坏项目,您可以/应该使用单元/集成测试,我认为任何解决方案都会自行保证这一点。如果您确实需要为不同的项目使用单独的dbml,请使用sqlmetal使它们自动更新(我们就是这样做的,在重新生成dbml之后,我们运行xslt转换来调整生成的dbml,因此我们从不手动接触dbml)。