天天看点

vs1.0---2.0

前段时间我做了将我们的项目由1.0升级到2.0的工作,页面部分不是我处理,我处理的都是业务逻辑层和数据访问层,下面是我在做该工作过程中的一点总结写下来与大家分享.主要是针对微软的企业类库.

一.Enterprise Library中Data Access Block

1.原来要生成一个数据库实例用的是这种方法:

DatabaseProviderFactory databasefactory = new DatabaseProviderFactory(context);

dbInstance = databasefactory.Create(DBInstanceName);

其中context为ConfigurationManager.GetCurrentContext得到的.

现在要改为:

DatabaseProviderFactory databasefactory = new DatabaseProviderFactory(context);

dbInstance = databasefactory.Create(DBInstanceName);

其中context为Microsoft.Practices.EnterpriseLibrary.Common.Configuration.IconfigurationSource;

具体传这个参数时我们是用的 new SystemConfigurationSource() as IconfigurationSource;

如果我们要使用的是Web.config或App.config则我们需要new SystemConfigurationSource,若我们要使用的我们自定义的配置文件如:Myconfig.config则我们需要new FileConfigurationSource

2.DbCommandWapper的变化

现在用的是System.Data.Common命名空间下的DbCommand

相应的原来的GetStoredProCommandWrapper也变为了GetStoredProCommand

原来的DbCommandWrapper.AddInParameter等变成了数据库实例来做,即:dbInstance.AddInParameter,其参数中对应的要加入DbCommand.

3.原来的IDbConnection conn = this.dbInstance.GetConnection();

变为DbConnection conn = this.dbInstance.CreateConnection();

原来的IDbTransaction transaction = conn.BeginTransaction();

变为现在的DbTransaction transaction = conn.BeginTransaction();

二.Enterprise Library 中 Security Block

1.原来的IAuthenticationProvider,IRolesProvider,UserRoleManager已经不再存在,它们原来能实现的一些功能相应的由MemberShip和Roles两个类来实现,这两个类现在已被集成到我们的Framework中,但是这两个类默认情况下访问的是由asp_netregsql生成的aspnetdb数据库,所以我们要想让他们来访问我们自己的数据库我们必须重写这两个类的提供程序---MemberShipProvider和RoleProvider.关于具体的重写情况我就不多说了,有问题请与我联系,我的MSN:[email protected]

IAuthorizationProvider这个接口的Authorize方法也要调用Principle的IsInRole方法,这个方法其实是Roles里面的一个方法,所以我们如果想让它来访问我们自己的数据库还是要对RoleProvider进行重写,在我的项目中我们的用户增删改等操作都是我们自己写的方法,没有调用那个Membership提供的一些方法,所以在我将项目升级的过程中就没有用重写那两个提供程序的方法,而是自己写了一个dll,将它加到了Security模块中,改写了Security中的方法,这样就省去了要重写那个提供程序那么多不必要重写的方法,还省去了在配置文件中要做那么多配置的工作.

转载于:https://www.cnblogs.com/seed/archive/2006/12/06/583982.html