
http://my.oschina.net/u/170703/blog/210814?p=1
详细可以参考这个,有图解教程,希望可以帮到你
1)由以往的经验:在ADO.NET中,要 *** 作多个数据库,那就多写两个SqlHelper吧,或封装下,能动态的修改链接字符串。因此想到在这里能不能建多个ADO.NET实体数据模型呢?于是乎就有了这样两个文件:SealDBModel.edmx及UcmsDBModel.edmx。2)SealDBModel是主要的,因此在Server中对其处理,作了继承。也同时使用了UcmsDBModel。
3)这段代码是有问题的,当要同时 *** 作不同数据库,且有数据有效性的时候,就会发现前面的一个成功了,后面的一个失败了。怎么办呢?EF的事务机制显然已经满足不了程序的要求了,怎么办呢?加TransactionScope吧。
4)于是乎就有了这样一段代码:
namespace Seal_Services
{
public class seal_testServer : BaseServer<seal_test>, Iseal_usersServer
{
public void TTTT()
{
using (TransactionScope scope = new TransactionScope())
{
try
{
seal_test test = new seal_test()
{
name = "1111",
age = 1
}
base.AddEntity(test)
base.db.SaveChanges()
BaseUCMSServer<au_Role>ucmsserver = new BaseUCMSServer<au_Role>()
au_Role role = new au_Role()
role = ucmsserver.FindEntitie(c =>c.id == 7)
role.role_name = "BBBBBBBBBBB"
ucmsserver.UpdateEntity(role)
ucmsserver.db.SaveChangesForUCMS()
scope.Complete()
}
catch (System.Exception ex)
{
throw ex
}
}
}
}
}
5)可还是有问题呀,在处理第二个Server时会抛出异常“ 基础提供程序在 Open 上失败 ”。然而可以肯定的是,数据库链接字符串是正确的。可却报错了,这是为什么呢?【这是我电脑环境上的一个坑】
6)经过分析(翻了无数百度相同的转贴后...),想到了,会不会有SQL配置相关?导致了TransactionScope的使用失败?
7)打开 Sql Server Configuration Manager时,我看到SQL Server服务,显示的是:远程过程调用失败。这个???既然失败,那就让它正确。于是:打开 控制面板-卸载 找到 Express LocalDB。坚定的将其【卸载】。返回程序中,再执行。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)