有没有连接到数据库使用NHibernate的方法?
答
定制驱动
构建调用通过实施NHibernate.Driver.IDriver
你的C层驱动程序。
SQLite驱动程序是一个很好的开始,因为它是一个C库。您的IDriver将与SQLiteDriver几乎相同。 NHibernate source code将对此有用。
您还需要一个用于C库的IDbConnection包装器。在SQLite包装中,csharp-sqlite拥有最小的来源,它应该是有帮助的。
ODBC
NHibenate已经有ODBC连接,NHibernate.Driver.OdbcDriver
驱动程序。
答
有没有一种简单的方法来做到这一点。从理论上讲,NHibernate根本不需要生成SQL;这只是说你的方言(例如,它可能只是一些文本文件作为数据存储)。该接口不公开该SQL,因为它打破了抽象障碍。
但是,如果使用show_sql选项,NHibernate将记录SQL,并且可以使用该选项。我能想到的唯一方法是建立一个虚拟数据库并针对它运行NH查询。构建一个自定义log4net appender来捕获SQL并将其存储在一个变量中。现在您可以将其与查询关联起来。所以,那么你就必须像
RunQueryAndCaptureSql(session.CreateQuery("from Stuff s where s.Thing = 'dude'"));
哪些块等待附加器附加的SQL,然后返回。不经意的地狱,你必须确保你处理线程问题,但它应该工作。
坦率地说,我可能只是破解NH源。
你为什么要这样做? – 2010-02-26 18:25:40
在我们公司里有一个用于数据库访问的C层。所有的开发人员(.NET,Java,Cobol和Delphi)都必须使用这一层。现在我正在使用我自己的DAL,但我想使用NHibernate。 – 2010-03-01 08:26:26
这个C层用于代替ADO.NET吗?或者它适合哪里? – 2010-03-03 12:21:39