开发手册 欢迎您!
软件开发者资料库

NHibernate - 配置

NHibernate配置 - 从概述,架构,Orm,环境设置,入门,基本Orm,基本Crud操作,Profiler,添加Intelliesnse到映射文件,数据类型映射,配置,覆盖配置,批量大小,缓存,映射组件开始学习NHibernate ,关系,集合映射,级联,延迟加载,反向关系,加载/获取,Linq,Hibernate查询语言,条件查询,QueryOver查询,本机Sql,流利Hibernate。

在本章中,我们将介绍NHibernate配置.我们可以通过不同的方式配置NHibernate.它分为两大类

  • 基于XML的配置

  • 基于代码的配置

基于代码的配置

基于代码的配置内置于NHibernate中.它是围绕NHibernate 3引入的,到目前为止我们已经使用了代码库配置.

String Data Source = asia13797\\sqlexpress;String Initial Catalog = NHibernateDemoDB;String Integrated Security = True;String Connect Timeout = 15;String Encrypt = False;String TrustServerCertificate = False;String ApplicationIntent = ReadWrite;String MultiSubnetFailover = False;cfg.DataBaseIntegration(x = > { x.ConnectionString = "Data Source +    Initial Catalog + Integrated Security + Connect Timeout + Encrypt +   TrustServerCertificate + ApplicationIntent + MultiSubnetFailover";       x.Driver();    x.Dialect();    x.LogSqlInConsole = true; }); cfg.AddAssembly(Assembly.GetExecutingAssembly());

所有配置都在C#代码中指定.你可以在这里看到我们有了新的配置对象,然后我们使用NHibernate 3.1引入的 loquacious配置来配置数据库.我们正在使用什么连接字符串,我们连接的数据库和要使用的方言.我们还将映射程序集直接添加到此处.

基于XML的配置

如果您使用的是基于XML的配置,则可以使用 hibernate.cfg.xml 文件,它只是一个使用NHibernate架构的独立xml文件,或者您可以在应用程序或 web.cfg 中嵌入该NHibernate特定配置. hibernate.cfg.xml名称是默认的,但我们也可以为该xml文件使用任意名称.

让我们通过添加一个新的基于XML的配置来查看将xml文件发送到NHibernateDemoApp项目并将其命名为hibernate.cfg.xml.

在hibernate.cfg.xml文件中输入以下信息.

                        Data Source = asia13797\\sqlexpress;         Initial Catalog = NHibernateDemoDB;         Integrated Security = True;         Connect Timeout = 15;         Encrypt = False;         TrustServerCertificate = False;         ApplicationIntent = ReadWrite;         MultiSubnetFailover = False;                            NHibernate.Driver.SqlClientDriver                      NHibernate.Dialect.MsSql2008Dialect                 

正如您在上面的xml文件中所看到的,我们指定了与C#中提到的相同的配置.

现在让我们从Program.cs文件中评论这个配置,然后调用 Configure()方法,它将加载 hibernate.cfg.xml 文件,如下所示.

using HibernatingRhinos.Profiler.Appender.NHibernate; using NHibernate.Cfg; using NHibernate.Dialect; using NHibernate.Driver; using System; using System.Linq; using System.Reflection; namespace NHibernateDemoApp {    class Program {             static void Main(string[] args) {          NHibernateProfiler.Initialize();          var cfg = new Configuration();                   //cfg.DataBaseIntegration(x =>                  //{             // x.ConnectionString = "Data Source = asia13797;\\sqlexpress            Initial Catalog = NHibernateDemoDB;            Integrated Security = True;            Connect Timeout = 15;            Encrypt =False;            TrustServerCertificate = False;            ApplicationIntent = ReadWrite;            MultiSubnetFailover = False";                         // x.Driver();             // x.Dialect();             // x.LogSqlInConsole = true;          //});                   //cfg.AddAssembly(Assembly.GetExecutingAssembly());         cfg.Configure();         var sefact = cfg.BuildSessionFactory();         using (var session = sefact.OpenSession()) {                         using (var tx = session.BeginTransaction()) {                var students = session.CreateCriteria().List();                Console.WriteLine("\nFetch the complete list again\n");                               foreach (var student in students) {                   Console.WriteLine("{0} \t{1} \t{2} \t{3}", student.ID,                     student.FirstName, student.LastName, student.AcademicStanding);                }                tx.Commit();             }             Console.ReadLine();          }       }    }}

让我们再次运行您的应用程序,您将看到相同的输出.

Fetch the complete list again1 Allan Bommer Excellent2 Jerry Lewis Good