1黑馬程序員—做wpf小項目中,覺得有用的小知識點小結

------- Windows Phone 7手機開發.Net培訓、期待與您交流! -------

背景:
過年前,響應黑馬.net論壇呂老師《【活動】20天,做項目得積分,是大牛你就來........》(http://bbs.itheima.com/thread-37622-1-1.html)的帖子,學習了楊中科老師的wpf教程,參與了此活動。先將項目中遇到的幾個小知識點分享下。

一、TransactionScope的使用:
(目的:多表操作時,有時候希望,一張表數據操作失敗,其他表被數據數據能回滾等)
第一步:引入dll:using System.Transactions;
第二步:(參考此例子)
       實例:
           using (TransactionScope ts = new TransactionScope())
           {
               DepartmentDAL dal = new DepartmentDAL();
               dal.Insert("測試1");//第一個sql語句操作
               Operator op = new Operator();
               op.UserName = "hello";
               op.Password = "33333";
               op.RealName = "haha";
               new OperatorDAL().Insert(op);////第二個sql語句操作
               ts.Complete();//一定要complete,否則數據無法提交
           }  
但是,使用TransactionScope需要配置如下信息:
在控制面板--->管理工具--->服務 中,開啓Distributed Transaction Coordinator 服務。
a.控制面板->管理工具->組件服務->計算機->我的電腦->右鍵->屬性
b.選擇MSDTC頁, 確認"使用本地協調器"
c.點擊下方"安全配置"按鈕
d.勾選: "允許網絡DTC訪問","允許遠程客戶端","允許入站","允許出站","不要求進行身份驗證".
e.對於數據庫服務器端, 可選擇"要求對呼叫方驗證"
f.勾選:"啓用事務Internet協議(TIP)事務"。
g.在雙方防火牆中增加MSDTC.exe例外
  可用命令行: netsh firewall set allowedprogram %windir%\system32\msdtc.exe MSDTC enable
二、使用水晶報表時,報錯,如:Crystal Reports for vs2010 運行找不到文件 crdb_adoplus.dll'
   在使用水晶報表時,報錯:【Could not load file or assembly 'file:///C:/Program Files/SAP BusinessObjects/Crystal Reports for .NET Framework 4.0/Common/SAP BusinessObjects Enterprise XI 4.0/win32_x86/dotnet1/crdb_adoplus.dll' or one of its dependencies. 系統找不到指定的文件。】
解決辦法:
在app.config裏面下入下面的代碼就可以解決問題
<?xml version="1.0"?>  
<configuration>  
<startup  useLegacyV2RuntimeActivationPolicy="true">  
 <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/>  
</startup>  
</configuration>  
三、異常統一處理:
在app.config中加入【DispatcherUnhandledException="Application_DispatcherUnhandledException"】,如下:
<Application x:Class="HRMSystem.UI.App"
            xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
            xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
            StartupUri="MainWindow.xaml"  DispatcherUnhandledException="Application_DispatcherUnhandledException">
   <Application.Resources>
   </Application.Resources>
</Application>
接着在app.cs中加入處理時間:
   public partial class App : Application
   {
       private void Application_DispatcherUnhandledException(object sender, System.Windows.Threading.DispatcherUnhandledExceptionEventArgs e)
       {
           //在Application_DispatcherUnhandledException中集中處理異常
           MessageBox.Show("程序中出現了嚴重錯誤,請聯繫開發人員 charles xiao!" + e.Exception.Message);
           e.Handled = true;
       }
   }
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章