• NHibernate Step By Step(1)配置文件(Configuration)


    属于orm的配置文件

    介绍一些常用的方法,太生僻的就不写了

    一.全局配置

    这是程序的入口点,一般情况两种

    常用配置方法

    1.在app.config或者web.config文件配置如下节点

    (1)配置节点

    <configSections>
        <section name="hibernate-configuration"
         type="NHibernate.Cfg.ConfigurationSectionHandler, NHibernate"
        requirePermission="false" /> <!-- Important under Medium Trust -->
    </configSections>


    (2)配置具体参数

    <hibernate-configuration xmlns="urn:nhibernate-configuration-2.2">
        <bytecode-provider type="null"/><!-- Important under Medium Trust -->
        <session-factory>
            <property name="connection.provider">NHibernate.Connection.DriverConnectionProvider, NHibernate</property>
            <property name="connection.connection_string">
                Server=(local);initial catalog=nhibernate;Integrated Security=true
            </property>
            <property name="dialect">NHibernate.Dialect.MsSql2005Dialect</property>
            <property name="connection.driver_class">NHibernate.Driver.SqlClientDriver</property>
            <property name="current_session_context_class">managed_web</property>
            <property name="proxyfactory.factory_class">NHibernate.ByteCode.LinFu.ProxyFactoryFactory, NHibernate.ByteCode.LinFu</property>
        </session-factory>
    </hibernate-configuration>


    2.将文件配置到hibernate.cfg.xml的文件中

    <?xml version="1.0" encoding="utf-8"?>
    <!-- 
    This template was written to work with NHibernate.Test.
    Copy the template to your NHibernate.Test project folder and rename it in hibernate.cfg.xml and change it 
    for your own use before compile tests in VisualStudio.
    -->
    <!-- This is the System.Data.OracleClient.dll provider for Oracle from MS -->
    <hibernate-configuration  xmlns="urn:nhibernate-configuration-2.2" >
        <session-factory name="NHibernate.Test">
            <property name="connection.driver_class">NHibernate.Driver.SqlClientDriver</property>
            <property name="connection.connection_string">
          Data Source=CLINGINGBOY-PC\SQLEXPRESS;Initial Catalog=NHTEST;Integrated Security=True
        </property>
            <property name="adonet.batch_size">10</property>
            <property name="show_sql">true</property>
            <property name="dialect">NHibernate.Dialect.MsSql2005Dialect</property>
            <property name="use_outer_join">true</property>
            <property name="command_timeout">10</property>
            <property name="query.substitutions">true 1, false 0, yes 'Y', no 'N'</property>
        </session-factory>
    </hibernate-configuration>



    读取配置文件方法

    (1)默认读取配置文件(推荐方法)
    即上面定义了文件文件后,默认采用Configure无参方法读取,若配置了config文件,则优先读取,否则从hibernate.cfg.xml文件中读取

    Configuration cfg = new Configuration();
    cfg.Configure();


    (2)自定义读取配置文件
    下面的情况虽提供了灵活性,但不推荐使用,增加了复杂度.

    方法一:根据特定文件读取

    Configuration cfg = new Configuration();
    cfg.Configure("TestEnbeddedConfig.cfg.xml");


    方法二:根据程序集嵌入的资源文件读取(注意名字的命名空间)

    Configuration cfg = new Configuration();
    cfg.Configure(this.GetType().Assembly, "NHibernate.Test.TestEnbeddedConfig.cfg.xml");

    方法三:根据XML读取器来读取
                string xml =
                    @"<?xml version='1.0' encoding='utf-8' ?>
    <hibernate-configuration xmlns='urn:nhibernate-configuration-2.2'>
        <session-factory name='NHibernate.Test'>
      <event type='flush'>
        <listener class='NHibernate.Event.Default.DefaultFlushEventListener, NHibernate'/>
      </event> 
        </session-factory>
    </hibernate-configuration>";
    
                XmlDocument cfgXml = new XmlDocument();
                cfgXml.LoadXml(xml);
    
                Configuration cfg = new Configuration();
                XmlTextReader xtr = new XmlTextReader(xml, XmlNodeType.Document, null);
                cfg.Configure(xtr);


    动态修改配置文件
    除了默认从配置文件读取参数外,还可以在程序中修改和配置配置参数
    Environment类包含了配置文件的全部参数,所以想了解具体参数的可以参考这个类

    (1)检测配置文件参数是否配置正确

    Assert.IsTrue(cfg.Properties.ContainsKey(Environment.ShowSql));
    Assert.IsTrue(cfg.Properties.ContainsKey(Environment.UseQueryCache));
    Assert.IsFalse(cfg.Properties.ContainsKey(Environment.PrepareSql), 
        "Our default conf should not include override the possible Dialect default configuration.");
    Assert.IsTrue(cfg.Properties.ContainsKey(Environment.Isolation));
    Assert.AreEqual("true 1, false 0, yes 1, no 0", cfg.Properties[Environment.QuerySubstitutions]);
    Assert.AreEqual("Data Source=CLINGINGBOY-PC\\SQLEXPRESS;Initial Catalog=nhibernate;Integrated Security=True",
                    cfg.Properties[Environment.ConnectionString]);


    (2)手动配置参数

    Configuration cfg = new Configuration();
    IDictionary props = new Hashtable();
    
    props[Environment.ConnectionProvider] = "NHibernate.Connection.DriverConnectionProvider";
    props[Environment.Dialect] = "NHibernate.Dialect.MsSql2000Dialect";
    props[Environment.ConnectionDriver] = "NHibernate.Driver.SqlClientDriver";
    props[Environment.ConnectionString] =
        "Data Source=CLINGINGBOY-PC\\SQLEXPRESS;Initial Catalog=nhibernate;Integrated Security=True";
    
    foreach (DictionaryEntry de in props)
    {
        cfg.SetProperty(de.Key.ToString(), de.Value.ToString());
    }


    二.配置映射文件

    添加单个类的映射文件

    方法一:根据类名字
    cfg.AddClass(typeof(Simple));

    方法二:根据映射文件名

    cfg.AddResource("NHibernate.DomainModel.Simple.hbm.xml", typeof(Simple).Assembly);


    方法三:根据程序集来添加(推荐)

    public Configuration AddAssembly(Assembly assembly)


    方法四:直接通过配置文件来配置(推荐)

    还有其他的方法,如根据字符串,外部文件等来配置,一般用不到,就不介绍了。用到再参考api吧.

  • 相关阅读:
    相当当中 ,还用到一个很重要的类 ,map地图类
    使用ObjectDataSource查询和更新
    sqlserver 简单的存储过程学习记录
    一个winform的基于TCP的服务端的GPS平台的网关。利用多线程异步的方式 。
    个人网站准备之数据处理
    记录日志(自治事务
    android调用lua
    CMarkup类读写xml文件
    MyBatis.Net 配置
    NPOI读取Excel到集合对象
  • 原文地址:https://www.cnblogs.com/Clingingboy/p/1536864.html
Copyright © 2020-2023  润新知