NHibernate2.x应用:返回DataSet
www.nanhushi.com 佚名 不详
虽然NHibernate是完全OO的,但我们还是有需要返回DataSet的时候。 在ADO.NET里,要返回DataSet需要使用IDbDataAdapter, 那么通过NHibernate返回DataSet的关键就是如何创建合适的IDbDataAdapter实现类。 在NHibernate里,由IDriver负责创建Connection和Command,我们可以扩展相应的Driver使其能创建DataAdapter,对于SqlClientDriver的扩展类如下: public class ExSqlClientDriver : SqlClientDriver { public IDbDataAdapter CreateDataAdapter() { return new SqlDataAdapter(); } } 对应的配置更改如下: <property name="connection.driver_class">Chapter01.ExSqlClientDriver, Chapter01</property> 主调用代码: // 初始化 Configuration cfg = new Configuration().Configure(); ISessionFactory sf = cfg.BuildSessionFactory(); // 得到扩展的Driver ExSqlClientDriver driver = (ExSqlClientDriver)sf.ConnectionProvider.Driver; // 打开数据库连接 IDbConnection conn = ((ISessionFactoryImplementor)sf).OpenConnection(); // Examda提示:创建Command IDbCommand cmd = conn.CreateCommand(); cmd.CommandText = "select * from infos"; DataSet ds = new DataSet(); // 创建DataAdapter IDbDataAdapter da = driver.CreateDataAdapter(); da.SelectCommand = cmd; // 填充Dataset da.Fill(ds); 来源:考试大