Linq to sql 服务器上的MSDTC';服务器名';在linq to sql中不可用

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())

我正在将Transactionscope与linqtosql一起使用。我有以下代码:

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);
   }   
}