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;
}
}
-------
http://charlesxiao.blog.51cto.com/all/2657172