Linq to sql 服务器上的MSDTC';服务器名';在linq to sql中不可用
我正在将Transactionscope与linqtosql一起使用。我有以下代码:Linq to sql 服务器上的MSDTC';服务器名';在linq to sql中不可用,linq-to-sql,asp.net-web-api2,transactionscope,Linq To Sql,Asp.net Web Api2,Transactionscope,我正在将Transactionscope与linqtosql一起使用。我有以下代码: public bool Save(int Id, List<Student> students, List<Subject> subjects) { var isDataSaved = false; using (TransactionScope scope = new TransactionScope())
public bool Save(int Id, List<Student> students, List<Subject> subjects)
{
var isDataSaved = false;
using (TransactionScope scope = new TransactionScope())
{
try
{
// Save the students
SaveStudents(students);
// Save the subjects
SaveSubjects(subjects);
scope.Complete();
isDataSaved = true;
}
catch (Exception ex)
{
throw ex;
}
return isDataSaved;
}
}
在SaveStudents和SaveSubjects方法中使用相同的datacontext对象 我收到一个异常:服务器“servername”上的MSDTC不可用 根据我的初步分析,当一个数据库操作在本地数据库中,另一个数据库操作在远程数据库中时,就会发生这种错误
有人能帮我知道我缺少什么吗?你需要打开MSDTC服务 启动-->控制面板-->管理工具-->服务。 找到服务分布式事务协调器并启动它。
默认情况下,它的startup属性设置为Manual,因此它已关闭。“使用了相同的datacontext对象”我对此表示怀疑。这里有两个连接正在打开。这与本地/远程无关。将完整异常发布到字符串。你漏掉了信息。那是什么意思?此方法将始终返回true。删除变量和catch。相同的_dataContext第一次在方法中使用:SaveStudents,然后转到SaveSubjects。isDataSaved变量值用于保存跟踪数据。将异常发布到字符串输出。
public class StudentsRepository:IStudentsRepository
{
public StudentsRepository()
{
_dataContext = new SchoollDetailsDataContext(connectionString);
}
}