微软企业库50 学习之路Word文档下载推荐.docx

上传人:b****4 文档编号:7545790 上传时间:2023-05-08 格式:DOCX 页数:30 大小:250.06KB
下载 相关 举报
微软企业库50 学习之路Word文档下载推荐.docx_第1页
第1页 / 共30页
微软企业库50 学习之路Word文档下载推荐.docx_第2页
第2页 / 共30页
微软企业库50 学习之路Word文档下载推荐.docx_第3页
第3页 / 共30页
微软企业库50 学习之路Word文档下载推荐.docx_第4页
第4页 / 共30页
微软企业库50 学习之路Word文档下载推荐.docx_第5页
第5页 / 共30页
微软企业库50 学习之路Word文档下载推荐.docx_第6页
第6页 / 共30页
微软企业库50 学习之路Word文档下载推荐.docx_第7页
第7页 / 共30页
微软企业库50 学习之路Word文档下载推荐.docx_第8页
第8页 / 共30页
微软企业库50 学习之路Word文档下载推荐.docx_第9页
第9页 / 共30页
微软企业库50 学习之路Word文档下载推荐.docx_第10页
第10页 / 共30页
微软企业库50 学习之路Word文档下载推荐.docx_第11页
第11页 / 共30页
微软企业库50 学习之路Word文档下载推荐.docx_第12页
第12页 / 共30页
微软企业库50 学习之路Word文档下载推荐.docx_第13页
第13页 / 共30页
微软企业库50 学习之路Word文档下载推荐.docx_第14页
第14页 / 共30页
微软企业库50 学习之路Word文档下载推荐.docx_第15页
第15页 / 共30页
微软企业库50 学习之路Word文档下载推荐.docx_第16页
第16页 / 共30页
微软企业库50 学习之路Word文档下载推荐.docx_第17页
第17页 / 共30页
微软企业库50 学习之路Word文档下载推荐.docx_第18页
第18页 / 共30页
微软企业库50 学习之路Word文档下载推荐.docx_第19页
第19页 / 共30页
微软企业库50 学习之路Word文档下载推荐.docx_第20页
第20页 / 共30页
亲,该文档总共30页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

微软企业库50 学习之路Word文档下载推荐.docx

《微软企业库50 学习之路Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《微软企业库50 学习之路Word文档下载推荐.docx(30页珍藏版)》请在冰点文库上搜索。

微软企业库50 学习之路Word文档下载推荐.docx

你可以使用容器生成企业库对象的实例并注入到其他的对象。

企业库提供一个标准的接口从Unity容器中来获得定义在企业库配置中的对象的实例,如SqlDatabase或LogWriter.另外,注入友好的实例门面处理静态门面之外是有效的,因为静态门面不能用注入,但是为了向后兼容以前的版本而存在。

在本版本中的示例中都是用依赖注入,但是以前版本中是用的静态工厂类和静态门面在这个版本中还是支持的。

对象生成器,一个低版本的依赖注入机制在这个版本中被归入Unity中,在项目中不再需要单独引用对象生成器集。

支持Unity容器,必须引用一个被包含在企业库中的Microsoft.Practices.ServiceLocation程序集。

如果要使用一个第3方的依赖注入容器,必须直接实现IServiceLocator接口或者通过适配器实现。

二、影响所有模块的变化:

1.在企业库中主要修正是使用依赖注入机制。

所用的应用模块以及核心系统都是用依赖注入机制,并使用Unity作为默认的依赖注入容器,来创建和管理企业库对象。

2.自主容器的实现通过实现CommonServiceLocator项目提供的IServiceLocator接口来完成。

3.由于错误配置引发的错误将提供更多有用的错误信息。

4.配置系统公开了一个fluent接口,用来为单个对象或整个应用创建和填充配置源。

fluentAPI使得为各种情景创建配置源更加容易。

5.ConfigurationView类被删除.

6.一些配置元素有默认值,可能不同于以前版本的隐式默认值.

7.企业库现在允许你通过另一个配置文件合成一个混合配置文件.

8.可以可通过不同的配置文件读取不同的配置信息.

9.企业库不支持XAML浏览器应用程序(XBAP).

10.WmiEnabled标志为了像前兼容仍然存在企业库中,但是在5.0中是被忽略的,而且将来会被删除.

11.改进式的安装允许你只安装部分应用模块及配置工具.

12.在以前版本中要做统一集成,必须添加核心企业库的扩展和每个模块的扩展。

现在如果你只需要直接访问容器,那么只有核心扩展是必须的。

单独模块将自动支持。

旧的功能为了保持像前兼容仍然保留,但已经不起作用。

13.FileConfigurationSource.Save的签名已经改变,参数由3个变为2个。

14.快速入门不再包含在主安装程序中。

三、Breaking变化:

1.企业库现在抛出了一个配置错误ActivationException,之前是System.Configuration.ConfigurationErrorsException。

这包括试着解决没有配置信息错误的一个实例提供者。

2.以前版本在获取应用模块错误时抛出BuildFailedException错误,现在对于所有的应用模块都抛出ActivationException

3.之前的版本,在讲一个空源传到容器来调用容器的时候,会抛出ArgumentNullException,现在抛出NullReferenceException

4.ObjectBuilder2不再是一个单独的程序集,而是集成到了Unity集合中,在项目中也不需要引用ObjectBuilder2.dll。

5.WMI支持已经从企业库中删除,除了在logging模块中的WMI跟踪监听器。

6.如果你没有关闭DbDataReader,可能会导致随机的、很难在您的代码中找到的错误,尤其是当你正在一个由TransactionScope上下文创建的隐式事务下操作时。

你必须始终确保您的应用程序及时关闭DbDataReader,无论是明确的DbDataReader.Close方法关闭或是逼迫DbDataReader释放。

7.如果你使用validator特性必须引用System.ComponentModel.DataAnnotations程序集。

8.为FileConfigurationSource.Save方法签名已更改。

该方法有两个参数,而不是3个参数

9.Microsoft.Practices.EnterpriseLibrary.Configuration.Design.dll集合的功能和其他设计时集合被一个新的集合Microsoft.Practices.EnterpriseLibrary.Configuration.DesignTime.dll代替。

10,性能计数器异常从PolicyInjection.CallHandlers移到PolicyInjection程序集。

11.包含在PolicyInjectionApplicationBlock中的CachingCallHandler有未处理的安全漏洞,已经从PolicyInjectionApplicationBlock中移除。

四、配置工具的改变:

1.新的企业拥有一个新的GUI库和一个元数据驱动的可扩展性模。

2.支持向导

3.新的类型选择。

4.不支持对依赖策略的EnvironmentalOverrides。

日志模块处理Categories。

五、缓存模块变化:

1.缓存清除已被完全重写的性能优化

六、数据库访问模块:

1.ExecuteReader,ExecuteXmlReader,ExecuteScalar,andExecuteNonQuery方法具有异步版本。

2.包含了很多新的方法和类允许你提取数据作为对象序列。

例如在合适的时候使用客户端查询技术,如LINQ.

3.存在的方法ExecuteReader和新的方法BeginExecuteReader不接收CommandBehavior参数。

默认的当调用这些方法的时候这些方法

会自动设置CommandBehavior属性到reder中用来关闭连接直到指定一个事务。

七、异常处理模块:

1.日志异常处理重新使用日志模块的LogWriterandTraceListeners。

这在之前版本中不是默认设置。

2.增加一个功能,通过ExceptionManager.Process方法接收一个默认值并返回一个值。

[EntLib]微软企业库5.0学习之路——第二步、使用VS2010+DataAccess模块建立多数据库项目

现在我就开始进入学习之路的第二步——DataAccess模块,这个模块是企业库中被使用频率最高的模块,它很好的封装了数据库操作应用,为我们进行多数据库系统开发提供了便利,只需更改配置文件就可以很快的切换数据库访问(可惜还是要重写SQL语句,没法和ORM比)。

下面是我在配置企业库的时候碰到问题,如果没有碰到可以略去不看(可能有点小白)

注意:

此处切换数据库配置必须是计算机中已经安装好相应的数据库访问模块,如需要进行从MSSQL向SQLite数据库的变更时,计算机中必须安装好SQLite数据库访问模块(在这里我就碰到了这个问题,原来我机器上在VS2008开发时已经安装过SQLite数据库访问模块,但是新装了VS2010,在VS2010引用对话框中也能访问到在VS2008安装的SQLite(但是在企业库5.0配置器中无法查看到SQLite),但是发现更改企业库的配置文件后无法访问SQLite数据库,尝试了很多方法都没用,结果死马当活马医又重新装了一遍SQLite数据库访问模块再重新打开企业库配置器就可以看到SQLite数据库了(所以请确保在企业库编辑器中可以查看到要切换的数据库,否则可能导致无法访问数据库)。

看下图:

回归正题,这次的学习由于VS2010发布了,而且企业库5.0也都支持.NET4.0,所以决定企业库的学习之路采用VS2010进行学习(顺便熟悉下.NET4的特性,毕竟公司的项目不可能立马转移到.NET4.0的,现在就当练手吧)

好了,现在就开始进行第2步的学习了,首先看下项目的结构:

项目采用仿MSPetShop架构,如不了解此架构可以到此查看了解:

PetShop的系统架构设计

其中DAL和DALSQLite层对应MSSQL和SQLite数据库,Helper为整个项目的帮助器

现在来具体了解下DAL层

在DAL层中引用了Helper,IDAL,EnterpriseLibrary.Common和EnterpriseLibrary.Data这4个项目,其中Helper项目中有个DBHelper.cs,用于获取当前的数据对象,其代码如下(采用了C#4.0的语法特性,默认参数,数据库对象名默认为空,这样则会调用企业库默认的数据库对象,同时也可以在调用的时候赋值,这样则根据传递过来的数据库对象名来创建数据库,通过这个参数我们将原来需要重载的2个方法才能实现合并成了一个方法):

viewsourceprint?

01

usingMicrosoft.Practices.EnterpriseLibrary.Common.Configuration;

02

usingMicrosoft.Practices.EnterpriseLibrary.Data;

03

04

namespaceEntLibStudy.Helper

05

{

06

publicstaticclassDBHelper

07

08

///<

summary>

09

///获取数据库对象

10

/summary>

11

paramname="

name"

>

数据库实例名(默认name为空,调用默认数据库实例)<

/param>

12

returns>

数据库对象<

/returns>

13

publicstaticDatabaseCreateDataBase(stringname="

"

14

15

//returnDatabaseFactory.CreateDatabase(name);

16

returnEnterpriseLibraryContainer.Current.GetInstance<

Database>

(name);

17

}

18

19

在DAL层中则引用Helper来获取数据库对象,进行数据库操作,我们现在来看下具体的数据库访问类编写代码,学员操作类:

001

usingSystem;

002

usingSystem.Collections.Generic;

003

usingSystem.Data;

004

usingSystem.Data.Common;

005

usingSystem.Linq;

006

usingSystem.Text;

007

008

009

010

usingEntLibStudy.Model;

011

usingEntLibStudy.Helper;

012

013

namespaceEntLibStudy.DAL

014

015

publicclassStudentService:

EntLibStudy.IDAL.IStudentService

016

017

018

///新增学生

019

020

student"

学生对象<

021

<

022

publicintAdd(Studentstudent)

023

024

Databasedb=DBHelper.CreateDataBase();

025

StringBuildersb=newStringBuilder();

026

sb.Append("

insertintoStudentvalues(@ClassId,@SID,@Password,@Name,@Sex,@Birthday,@IsAdmin);

SELECT@@IDENTITY;

);

027

DbCommandcmd=db.GetSqlStringCommand(sb.ToString());

028

db.AddInParameter(cmd,"

@ClassId"

DbType.String,student.ClassId);

029

@SID"

DbType.String,student.Sid);

030

@Password"

DbType.String,student.Password);

031

@Name"

DbType.String,student.Name);

032

@Sex"

DbType.Int32,student.Sex);

033

@Birthday"

DbType.DateTime,student.Birthday);

034

@IsAdmin"

DbType.Int32,student.IsAdmin);

035

intid=Convert.ToInt32(db.ExecuteScalar(cmd));

036

returnid;

037

038

039

040

///更新

041

042

classInfo"

043

是否成功<

044

publicboolUpdate(Studentstudent)

045

046

047

048

updateStudentsetClassId=@ClassId,"

049

SID=@SID,"

050

Password=@Password,"

051

Name=@Name,"

052

Sex=@Sex,"

053

Birthday=@Birthday,"

054

IsAdmin=@IsAdmin"

055

whereID=@ID"

056

057

058

059

060

061

062

063

064

@ID"

DbType.Int32,student.Id);

065

returndb.ExecuteNonQuery(cmd)>

0?

true:

false;

066

067

068

069

///删除

070

071

id"

学生ID<

072

073

publicboolDelete(intid)

074

075

076

077

deletefromStudent"

078

079

080

DbType.Int32,id);

081

082

083

084

085

086

///根据学生ID查询学生对象

087

088

089

090

publicStudentSelectById(intid)

091

092

Studentstudent=null;

093

094

095

select*fromStudent"

096

097

098

099

100

using(IDataReaderreader=db.ExecuteReader(cmd))

101

102

if(reader.Read())

103

104

student=newStudent()

105

106

Id=reader.GetInt32(0),

107

ClassId=reader.GetInt32

(1),

108

Sid=reader.GetString

(2),

109

Password=reader.GetString(3),

110

Name=reader.GetString(4),

111

Sex=r

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 党团工作 > 入党转正申请

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2