1.在教師服務端,咱們須要在WCF的接口上加上WCF分佈式事務特性:數據庫
[OperationContract] [TransactionFlow(TransactionFlowOption.Allowed)] bool AddTeacher(TeacherViewModel vmTeacher);
在教師服務端的B層實現上加上WCF分佈式事務特性:windows
/// <summary> /// 增長學生 /// </summary> /// <param name="vmTeacher">教師ViewModel</param> /// <returns>布爾值</returns> [OperationBehavior(TransactionScopeRequired = true, TransactionAutoComplete = true)] public bool AddTeacher(TeacherViewModel vmTeacher) { //建立轉換規則 Mapper.CreateMap<TeacherViewModel, TeacherEntity>(); //轉換實體 TeacherEntity enStudent = Mapper.Map<TeacherEntity>(vmTeacher); //調用dal層增長方法 this.CurrentDal.Add(enStudent); //提交事務,返回結果 return this.DbSession.SaveChanges() > 0; }
2.在學生服務端的B層採用system.transactions進行分佈式事務處理:服務器
```
public void AddStudentTeacher(StudentViewModel vmStudent)
{
//建立轉換規則
Mapper.CreateMap<StudentViewModel, StudentEntity>();
//轉換實體
StudentEntity enStudent = Mapper.Map<StudentEntity>(vmStudent);架構
//調用dal層增長方法 this.CurrentDal.Add(enStudent); this.DbSession.SaveChanges(); //調用老師的添加方法 ITeacherContracts teacherContracts = ServiceFactory.GetTeacherService(); TeacherViewModel vmTeacher = new TeacherViewModel { TeacherID = "123", TeacherName = "11" }; teacherContracts.AddTeacher(vmTeacher); }
3.因爲每一個事務處理都須要using TransactionScope、 trans.Complete,因此咱們用Spring.Net的AOP管理這些相同的處理:
public class AroundAdvice : IMethodInterceptor
{
public object Invoke(IMethodInvocation invocation)
{
object result;
using (TransactionScope trans = new TransactionScope())
{
result = invocation.Proceed();
trans.Complete();
}
return result;
}
}app
4.配置數據庫服務器的MSDTC服務: 4.1開啓MSDTC服務,在DOS中輸入net start msdtc; 4.2設置MSDTC,在DOS中輸入dcomcnfg.exe,按下圖所示設置:  4.3關閉windows防火牆; 4.4開啓數據庫的分佈式事務支持,設置以下圖所示: 5. 6. 當前版本是用system.transactions實現的分佈式事務,用Spring.Net的AOP切了一下 歡迎工做一到五年的Java工程師朋友們加入Java架構開發:855801563 獲取更多免費視頻教程。 合理利用本身每一分每一秒的時間來學習提高本身,不要再用"沒有時間「來掩飾本身思想上的懶惰!趁年輕,使勁拼,給將來的本身一個交代