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