如何避免MSDTC?

时间:2009-03-04 14:42:39

标签: sql-server linq-to-entities

也许这只是一个愚蠢的想法,这就是为什么我把它扔在这里:

我正在创建一个应用程序,使用一个数据库为基础和当前数据(客户,文章,库存,开放发票......)和一个数据库每年存档数据(旧发票,库存移动......)

只有一个令人讨厌的小问题:MSDTC。大多数事务只触及一个数据库,但有几个触及当前数据库和一个存档年份。由于所有数据库都在同一服务器上重新签名,因此这可能是跨两个数据库的简单事务。

然而,Linq to实体强迫我为每个数据库创建一个单独的连接,这里MSDTC开始执行,要求a)安装和b)确实减慢了整个事情。

讨厌!

有没有办法让两个ADO.Net实体框架模型使用相同的连接,两者都有自己的当前数据库?

我已经尝试specify the database in the EF Schema, but EF does not like this and blocks it.

非常讨厌。也许我应该将所有表格移动到一个数据库中,但是在尝试将数据分离以备份和加速时,这是一个很痛苦的事情。

1 个答案:

答案 0 :(得分:2)

尝试在连接上调用ChangeDatabase。如果您使用多个连接,MSDTC将始终参与其中。即使是一个数据库。因此,我可以建议始终保持一个连接并通过此方法更改数据库。

希望这有帮助。