Web.config 中 configuration 元素内:
<configSections>
<section name="dal" type="Nfx.Configuration.DalSection, Nfx"/>
</configSections>
<dal default="sql">
<add name="passportOracle" assembly="Membership.OracleDal" dataAccess="Membership.OracleDal.DataAccess" database="Oracle"
connectionString="Data Source=******;User Id=******;Password=******;"/>
<add name="sql" assembly="Membership.SqlDal" dataAccess="Membership.SqlDal.DataAccess" database="Sql"
connectionString="Data Source=."SQLEXPRESS;AttachDbFilename=|DataDirectory|"Membership.mdf;Integrated Security=True;User Instance=True"/>
</dal>
增加引用
using Membership.Bll;
using Membership.Model;
调用方法如下:
Member.Add(new MemberInfo());
Nfx 类库的有关内容
SqlDao / OracleDao / OleDbDao / OdbcDao
这四个类是 DAL 项目中需要的基类,内部封装了一个静态的 Database 属性,可以直接访问数据库,写 Dao 时不需要关心如何连接数据库,内部通过配置文件的设置自动处理。
SqlDatabase / OracleDatabase / OleDbDatabase / OdbcDatabase
这四个类封装了访问数据库的方法,是 DbHelper 的另外一种封装,可以适当降低使用的复杂度和代码量。
TransactionScope
这个类与 System.Transactions.Transaction 同名,作用也是类似的;它们之间的区别在于 Nfx 的封装支持上述四个 Database 类的自动事务范围,是单连接、单事务的,不支持分布式事务,这主要是出于性能的考虑。相同的名称,在需要分布式事务时,可以达到只需要更改引用命名空间,不需要更改代码的效果。
Bo<TDataAccess>
这个类封装了一个静态的 DataAccess 属性,通过配置文件自动创建相应的对象。使用范型是因为 Nfx 无法获知 DataAccess 都需要提供哪些对象。我们可以封装一个自己的Bo基类进一步降低代码量,如上述例子。
Singleton模式
使用了 Nfx 类库,BLL 和 DAL 项目中的类都可以使用 Singleton 模式,这样不需要每次都创建新的对象,CPU 和内存的使用量都会适当降低,效率和性能自然提高。创建 Singleton 对象,上面的例子里使用的是内部静态类的方法,这样是线程安全的,效率也比较高。由于存在继承关系,不能使用静态类,上面的例子使用了密封类 (sealed) 和私有构造函数,可以避免类被继承或创建另外不必要的实例。
DalSection 配置节
assembly - 程序集名称字符串, .NET 规范;
dataAccess - TDataAccess 的实现类的全名,包括命名空间;
database - Sql / Oracle / OleDb / Odbc 四选一;
connectionString - 完整的数据库连接字符串。