注:本文中使用的是NH1.0.2.0版本,其他版本配置可能略有不同。

示例代码下载
(没看明白的看看这个或许可以明白些)

数据库脚本下载


NHibernate的灵活配置

1.Visual Studio中文件的生成操作

在开始讨论这个话题前,我们想来看看Visual Studio中文件的生成操作。

无(None) - 不在项目输出组中包含该文件,并且在生成进程中不会对其进行编译。例如包含文档的文本文件,如自述文件。

编译(Compile) - 将该文件编译到生成输出中。此设置用于代码文件。

内容(Content) - 不编译该文件,但将其包含在“内容”(Content) 输出组中。例如,此设置是 .htm 或其他类型 Web 文件的默认值。

嵌入的资源(Embedded Resource) - 将该文件作为 DLL 或可执行文件嵌入主项目生成输出中。此设置通常用于资源文件。

对于嵌入的资源,我们可以启动“Visual Studio 2005 命令提示”,输入ildasm命令,使用启动的工具打开程序集文件,然后在MANIFEST中找到资源文件的信息,如下图。可以看见有名为“DDLLY.MyDoc.NHibernateTest.ConfigurationTest.hibernate1.cfg.xml”的资源文件。


NHibernate的灵活配置

2.Configuration配置

配置Configuration需要调用Configuration.Configure,我们来看看Configuration.Configure方法的信息

public Configuration Configure();

如果存在应用程序配置文件,则使用应用程序配置文件中的<hibernate-configuration>节点配置NHibernate,否则使用hibernate.cfg.xml进行配置。

public Configuration Configure(Assembly,string);
使用程序集中的资源配置NHibernate。
public Configuration Configure(string)
c.使用指定的文件配置NHibernate。
public Configuration Configure(XmlTextReader)
使用指定的XmlTextReader配置NHibernate。

我们可以使用多种方式进行配置,比较常见的配置有以下几种

a.可以在应用程序配置文件(对于普通程序而言为App.config,对Asp.net是Web.config)中进行配置,调用Configure()配置,配置文件如下
NHibernate的灵活配置<?xmlversion="1.0"encoding="utf-8"?>
NHibernate的灵活配置
<configuration>
NHibernate的灵活配置
<configSections>
NHibernate的灵活配置
<sectionname="nhibernate"type="System.Configuration.NameValueSectionHandler,System,Version=1.0.5000.0,Culture=neutral,PublicKeyToken=b77a5c561934e089"/>
NHibernate的灵活配置
</configSections>
NHibernate的灵活配置
NHibernate的灵活配置
<nhibernate>
NHibernate的灵活配置
<add
NHibernate的灵活配置
key="hibernate.show_sql"
NHibernate的灵活配置value
="true"
NHibernate的灵活配置
/>
NHibernate的灵活配置
<add
NHibernate的灵活配置
key="hibernate.connection.provider"
NHibernate的灵活配置value
="NHibernate.Connection.DriverConnectionProvider"
NHibernate的灵活配置
/>
NHibernate的灵活配置
<add
NHibernate的灵活配置
key="hibernate.dialect"
NHibernate的灵活配置value
="NHibernate.Dialect.MsSql2000Dialect"
NHibernate的灵活配置
/>
NHibernate的灵活配置
<add
NHibernate的灵活配置
key="hibernate.connection.driver_class"
NHibernate的灵活配置value
="NHibernate.Driver.SqlClientDriver"
NHibernate的灵活配置
/>
NHibernate的灵活配置
<add
NHibernate的灵活配置
key="hibernate.connection.connection_string"
NHibernate的灵活配置value
="server=.;database=user;uid=sa;pwd=App1234;"
NHibernate的灵活配置
/>
NHibernate的灵活配置
NHibernate的灵活配置
</nhibernate>
NHibernate的灵活配置
NHibernate的灵活配置
</configuration>
NHibernate的灵活配置
NHibernate的灵活配置
NHibernate的灵活配置

这种配置方式只能对属性进行配置,不能配置映射类,而且应用程序配置文件可能还需要配置其他的信息,容易造成文件过于大,不方面浏览。所以我不推荐这种配置方式。

b.单独使用配置文件进行配置
b1.把配置文件放在程序应用程序同级目录,使用Configure()方法,此时配置文件名应为“hibernate.cfg.xml”
b2.把配置文件放到某个指定的路径,调用Configure(string)方法
b3.把配置文件作为资源嵌入到程序集(把文件的生成类型设置为"嵌入的资源"),调用Configure(Assembly,string)方法
这是一个典型配置文件

NHibernate的灵活配置<?xmlversion="1.0"encoding="utf-8"?>
NHibernate的灵活配置
<!--普通配置文件,使用程序集加载映射文件-->
NHibernate的灵活配置
<hibernate-configurationxmlns="urn:nhibernate-configuration-2.0">
NHibernate的灵活配置
<session-factoryname="DDLLY.MyDoc.NHibernate.QuickStart">
NHibernate的灵活配置
<!--属性-->
NHibernate的灵活配置
<propertyname="connection.provider">NHibernate.Connection.DriverConnectionProvider</property>
NHibernate的灵活配置
<propertyname="connection.driver_class">NHibernate.Driver.SqlClientDriver</property>
NHibernate的灵活配置
<propertyname="connection.connection_string">server=.;database=user;uid=sa;pwd=App1234;</property>
NHibernate的灵活配置
<propertyname="show_sql">false</property>
NHibernate的灵活配置
<propertyname="dialect">NHibernate.Dialect.MsSql2000Dialect</property>
NHibernate的灵活配置
<propertyname="use_outer_join">true</property>
NHibernate的灵活配置
<propertyname="query.substitutions">true1,false0,yes'Y',no'N'</property>
NHibernate的灵活配置
<!--映射文件-->
NHibernate的灵活配置
<!--程序将加载DDLLY.MyDoc.NHibernateTest.Configuration命名空间所有的映射文件(*.hbm.xml)-->
NHibernate的灵活配置
<mappingassembly="DDLLY.MyDoc.NHibernateTest.ConfigurationTest"/>
NHibernate的灵活配置
</session-factory>
NHibernate的灵活配置
</hibernate-configuration>
NHibernate的灵活配置

我写了个类来测试

NHibernate的灵活配置usingSystem.Reflection;
NHibernate的灵活配置
usingNHibernate.Cfg;
NHibernate的灵活配置
usingNUnit.Framework;
NHibernate的灵活配置
NHibernate的灵活配置
namespaceDDLLY.MyDoc.NHibernateTest.ConfigurationTest.Test
NHibernate的灵活配置NHibernate的灵活配置
NHibernate的灵活配置{
NHibernate的灵活配置NHibernate的灵活配置
/**////<summary>
NHibernate的灵活配置
///测试ConfigurationTest.Configure()方法的测试类
NHibernate的灵活配置
///</summary>

NHibernate的灵活配置[TestFixture]
NHibernate的灵活配置
publicclassConfigureFixture
NHibernate的灵活配置NHibernate的灵活配置
NHibernate的灵活配置{
NHibernate的灵活配置NHibernate的灵活配置
测试方法#region测试方法
NHibernate的灵活配置
NHibernate的灵活配置NHibernate的灵活配置
/**////<summary>
NHibernate的灵活配置
///测试ConfigurationTest.Configure()方法
NHibernate的灵活配置
///加载和应用程序同目录的hibernate.cfg.xml
NHibernate的灵活配置
///将加载"bin/Debug或Release下的hibernate.cfg.xml"
NHibernate的灵活配置
///</summary>

NHibernate的灵活配置[Test]
NHibernate的灵活配置
publicvoidTestConfigure1()
NHibernate的灵活配置NHibernate的灵活配置
NHibernate的灵活配置{
NHibernate的灵活配置Configurationcfg
=newConfiguration().Configure();
NHibernate的灵活配置Assert.AreEqual(
"true1,false0,yes'Y',no'N'",cfg.Properties[Environment.QuerySubstitutions]);
NHibernate的灵活配置Assert.AreEqual(
"server=.;database=user;uid=sa;pwd=App1234;",cfg.Properties[Environment.ConnectionString]);
NHibernate的灵活配置}

NHibernate的灵活配置
NHibernate的灵活配置NHibernate的灵活配置
/**////<summary>
NHibernate的灵活配置
///测试Configure(Assembly,string)方法,加载嵌入在程序集中的hibernate.cfg.xml
NHibernate的灵活配置
///</summary>

NHibernate的灵活配置[Test]
NHibernate的灵活配置
publicvoidTestConfigure2()
NHibernate的灵活配置NHibernate的灵活配置
NHibernate的灵活配置{
NHibernate的灵活配置Configurationcfg
=newConfiguration().Configure(
NHibernate的灵活配置Assembly.GetExecutingAssembly(),
//当前代码正从中运行的程序集。
NHibernate的灵活配置
TestHelper.NAMEPLACENAME+".hibernate.cfg.xml");
NHibernate的灵活配置Assert.AreEqual(
"true1,false0,yes'Y',no'N'",cfg.Properties[Environment.QuerySubstitutions]);
NHibernate的灵活配置Assert.AreEqual(
"server=.;database=user;uid=sa;pwd=App1234;",cfg.Properties[Environment.ConnectionString]);
NHibernate的灵活配置}

NHibernate的灵活配置
NHibernate的灵活配置NHibernate的灵活配置
/**////<summary>
NHibernate的灵活配置
///测试Configure(string)方法,加载指定路径的文件
NHibernate的灵活配置
///</summary>

NHibernate的灵活配置[Test]
NHibernate的灵活配置
publicvoidTestConfigure3()
NHibernate的灵活配置NHibernate的灵活配置
NHibernate的灵活配置{
NHibernate的灵活配置Configurationcfg
=newConfiguration().Configure("hibernate.cfg.xml");
NHibernate的灵活配置Assert.AreEqual(
"true1,false0,yes'Y',no'N'",cfg.Properties[Environment.QuerySubstitutions]);
NHibernate的灵活配置Assert.AreEqual(
"server=.;database=user;uid=sa;pwd=App1234;",cfg.Properties[Environment.ConnectionString]);
NHibernate的灵活配置}

NHibernate的灵活配置
NHibernate的灵活配置
#endregion

NHibernate的灵活配置}

NHibernate的灵活配置}

让我们来看看配置文件,配置文件中主要配置的是各种属性和映射类的信息(还有缓存配置方面的信息,将在后面的章节讲到)。

在NHibernate.Cfg.Environment类中可以看到的可用属性信息。
例如Environment中publicconststringConnectionString = "hibernate.connection.connection_string";

关于属性的说明可以查看NHibernate的文档。

映射文件的配置有以下几种方法

a.使用程序集中的所有资源文件


NHibernate的灵活配置<!--程序将加载DDLLY.MyDoc.NHibernateTest.Configuration命名空间所有的映射文件(*.hbm.xml)-->
NHibernate的灵活配置
<mappingassembly="DDLLY.MyDoc.NHibernateTest.ConfigurationTest"/>
NHibernate的灵活配置

b.使用指定文件


NHibernate的灵活配置<!--映射文件-->
NHibernate的灵活配置
<!--程序将加载指定的文件-->
NHibernate的灵活配置
<!--这种写法将加载和可执行程序的路径中的User.hbm.xml文件-->
NHibernate的灵活配置
<!--在VisualStudio把生成的可执行文件放在bin/Debug和bin/Release中-->
NHibernate的灵活配置
<!--所以此文件也要放在这两个目录中-->
NHibernate的灵活配置
<mappingfile="User.hbm.xml"/>
NHibernate的灵活配置

c.使用程序集中的指定资源文件


NHibernate的灵活配置<!--映射文件-->
NHibernate的灵活配置
<!--程序将加载指定的文件-->
NHibernate的灵活配置
<!--这种写法将加载加载资源文件-->
NHibernate的灵活配置
<mappingresource="DDLLY.MyDoc.NHibernateTest.ConfigurationTest.User.hbm.xml"assembly="DDLLY.MyDoc.NHibernateTest.ConfigurationTest"/>
NHibernate的灵活配置
NHibernate的灵活配置
NHibernate的灵活配置

我们也可以使用代码来配置这些内容。

AddAssembly

添加程序集中所有以"hbm.xml"为结尾的文件作为映射文件。

示例:cfg.AddAssembly(Assembly.GetExecutingAssembly());

AddClass

使用协定从应用程序资源读取一个映射。类 Foo.Bar.Foo被映射为名为Foo.Bar.Foo.hbm.xml的嵌入在类所在的程序集中的资源文件。

示例:cfg.AddClass(typeof (User));

AddFile

从一个特别的XML文件读取映射。这个方法和AddXmlFile作用一样。

示例:cfg.AddFile("User.hbm.xml");

AddProperties

添加一个IDictionary类型的属性集合。Key是属性名,Value是属性的值。

示例:

//添加连接字符串属性
Hashtable properties = new Hashtable();
properties.Add(Environment.ConnectionString, //NHibernate.Cfg.Environment类中有所有的可属性信息
"server=.;database=user;uid=sa;pwd=App1234;");
cfg.AddProperties(properties);

我比较喜欢使用配置文件里面配置程序集的做法,因为这种做法最简单直接。

我们也可以把两种方式结合起来使用,例如我们可以在配置文件中配置好除连接字符串外的其它信息,然后在代码中添加连接字符串。

不管是映射信息还是属性信息最终都回被设置到Configuration里,我们可以查看Configuration的ClassMappings和Properties来查看这些信息。

同样我也写了两个类,前一个用来测试配置映射类。后一个用来测试配置属性。

测试配置映射

NHibernate的灵活配置usingSystem.Reflection;
NHibernate的灵活配置
usingNHibernate.Cfg;
NHibernate的灵活配置
usingNUnit.Framework;
NHibernate的灵活配置
NHibernate的灵活配置
namespaceDDLLY.MyDoc.NHibernateTest.ConfigurationTest.Test
NHibernate的灵活配置NHibernate的灵活配置
NHibernate的灵活配置{
NHibernate的灵活配置NHibernate的灵活配置
/**////<summary>
NHibernate的灵活配置
///测试加载映射文件的类
NHibernate的灵活配置
///</summary>

NHibernate的灵活配置[TestFixture]
NHibernate的灵活配置
publicclassConfigMappingFixture
NHibernate的灵活配置NHibernate的灵活配置
NHibernate的灵活配置{
NHibernate的灵活配置NHibernate的灵活配置
SetUp和TearDown#regionSetUp和TearDown
NHibernate的灵活配置
NHibernate的灵活配置[SetUp]
NHibernate的灵活配置
publicvoidSetUp()
NHibernate的灵活配置NHibernate的灵活配置
NHibernate的灵活配置{
NHibernate的灵活配置
//添加名为LLY,密码为123456的用户,因为这是数据库的第一条记录,所以数据库标识为1
NHibernate的灵活配置
stringSetUpSql="INSERTINTOusers([UserName],[Password])VALUES('LLY','123456')";
NHibernate的灵活配置TestHelper.SqlExecuteNonQuery(SetUpSql);
NHibernate的灵活配置}

NHibernate的灵活配置
NHibernate的灵活配置[TearDown]
NHibernate的灵活配置
publicvoidTearDown()
NHibernate的灵活配置NHibernate的灵活配置
NHibernate的灵活配置{
NHibernate的灵活配置
//清空users表,并把标识(identity)清零
NHibernate的灵活配置
stringTearDownSql="TRUNCATETABLEusers";
NHibernate的灵活配置TestHelper.SqlExecuteNonQuery(TearDownSql);
NHibernate的灵活配置}

NHibernate的灵活配置
NHibernate的灵活配置
#endregion

NHibernate的灵活配置
NHibernate的灵活配置NHibernate的灵活配置
使用配置文件配置映射的测试#region使用配置文件配置映射的测试
NHibernate的灵活配置
NHibernate的灵活配置NHibernate的灵活配置
/**////<summary>
NHibernate的灵活配置
///测试使用配置文件中配置的程序集加载映射文件
NHibernate的灵活配置
///
NHibernate的灵活配置
///<!--映射文件-->
NHibernate的灵活配置
///<!--程序将加载DDLLY.MyDoc.NHibernateTest.Configuration命名空间所有的映射文件(*.hbm.xml)-->
NHibernate的灵活配置
///<mappingassembly="DDLLY.MyDoc.NHibernateTest.ConfigurationTest"/>
NHibernate的灵活配置
///
NHibernate的灵活配置
///</summary>

NHibernate的灵活配置[Test]
NHibernate的灵活配置
publicvoidTestConfigMappingUseFile1()
NHibernate的灵活配置NHibernate的灵活配置
NHibernate的灵活配置{
NHibernate的灵活配置
//配置Configuration
NHibernate的灵活配置
Configurationcfg=newConfiguration().Configure(
NHibernate的灵活配置Assembly.GetExecutingAssembly(),
//当前代码正从中运行的程序集。
NHibernate的灵活配置
TestHelper.NAMEPLACENAME+".hibernate.cfg.xml");
NHibernate的灵活配置
NHibernate的灵活配置
//测试
NHibernate的灵活配置
TestHelper.CheckConfiguration(cfg);
NHibernate的灵活配置}

NHibernate的灵活配置
NHibernate的灵活配置NHibernate的灵活配置
/**////<summary>
NHibernate的灵活配置
///测试以文件形式加载映射文件,使用配置文件中的配置
NHibernate的灵活配置
///
NHibernate的灵活配置
///<!--映射文件-->
NHibernate的灵活配置
///<!--程序将加载指定的文件-->
NHibernate的灵活配置
///<!--这种写法将加载和可执行程序的路径中的User.hbm.xml文件-->
NHibernate的灵活配置
///<!--在VisualStudio把生成的可执行文件放在bin/Debug和bin/Release中-->
NHibernate的灵活配置
///<!--所以此文件也要放在这两个目录中-->
NHibernate的灵活配置
///<mappingfile="User.hbm.xml"/>
NHibernate的灵活配置
///
NHibernate的灵活配置
///</summary>

NHibernate的灵活配置[Test]
NHibernate的灵活配置
publicvoidTestConfigMappingUseFile2()
NHibernate的灵活配置NHibernate的灵活配置
NHibernate的灵活配置{
NHibernate的灵活配置
//配置Configuration
NHibernate的灵活配置
Configurationcfg=newConfiguration().Configure(
NHibernate的灵活配置Assembly.GetExecutingAssembly(),
//当前代码正从中运行的程序集。
NHibernate的灵活配置
TestHelper.NAMEPLACENAME+".hibernate1.cfg.xml");
NHibernate的灵活配置
NHibernate的灵活配置
//测试
NHibernate的灵活配置
TestHelper.CheckConfiguration(cfg);
NHibernate的灵活配置}

NHibernate的灵活配置
NHibernate的灵活配置NHibernate的灵活配置
/**////<summary>
NHibernate的灵活配置
///测试加载资源文件作为映射文件,使用配置文件中的配置
NHibernate的灵活配置
///
NHibernate的灵活配置
///<!--映射文件-->
NHibernate的灵活配置
///<!--程序将加载指定的文件-->
NHibernate的灵活配置
///<!--这种写法将加载加载资源文件-->
NHibernate的灵活配置
///<mappingresource="DDLLY.MyDoc.NHibernateTest.ConfigurationTest.User.hbm.xml"assembly="DDLLY.MyDoc.NHibernateTest.ConfigurationTest"/>
NHibernate的灵活配置
///
NHibernate的灵活配置
///</summary>

NHibernate的灵活配置[Test]
NHibernate的灵活配置
publicvoidTestConfigMappingUseFile3()
NHibernate的灵活配置NHibernate的灵活配置
NHibernate的灵活配置{
NHibernate的灵活配置
//配置Configuration
NHibernate的灵活配置
Configurationcfg=newConfiguration().Configure(
NHibernate的灵活配置Assembly.GetExecutingAssembly(),
//当前代码正从中运行的程序集。
NHibernate的灵活配置
TestHelper.NAMEPLACENAME+".hibernate2.cfg.xml");
NHibernate的灵活配置
NHibernate的灵活配置
//测试
NHibernate的灵活配置
TestHelper.CheckConfiguration(cfg);
NHibernate的灵活配置}

NHibernate的灵活配置
NHibernate的灵活配置
#endregion

NHibernate的灵活配置
NHibernate的灵活配置NHibernate的灵活配置
使用程序代码配置映射的测试#region使用程序代码配置映射的测试
NHibernate的灵活配置
NHibernate的灵活配置NHibernate的灵活配置
/**////<summary>
NHibernate的灵活配置
///测试在代码中加载映射文件,使用程序集
NHibernate的灵活配置
///hibernate3.cfg.xml中未设置映射类信息使用代码添加
NHibernate的灵活配置
///</summary>

NHibernate的灵活配置[Test]
NHibernate的灵活配置
publicvoidTestConfigMappingUseCode1()
NHibernate的灵活配置NHibernate的灵活配置
NHibernate的灵活配置{
NHibernate的灵活配置
//配置Configuration
NHibernate的灵活配置
Configurationcfg=newConfiguration().Configure(
NHibernate的灵活配置Assembly.GetExecutingAssembly(),
//当前代码正从中运行的程序集。
NHibernate的灵活配置
TestHelper.NAMEPLACENAME+".hibernate3.cfg.xml");
NHibernate的灵活配置
NHibernate的灵活配置
//加载程序集中所有映射文件
NHibernate的灵活配置
cfg.AddAssembly(Assembly.GetExecutingAssembly());
NHibernate的灵活配置
NHibernate的灵活配置
//测试
NHibernate的灵活配置
TestHelper.CheckConfiguration(cfg);
NHibernate的灵活配置}

NHibernate的灵活配置
NHibernate的灵活配置NHibernate的灵活配置
/**////<summary>
NHibernate的灵活配置
///测试在代码中加载映射文件,使用类
NHibernate的灵活配置
///hibernate3.cfg.xml中未设置映射类信息使用代码添加
NHibernate的灵活配置
///</summary>

NHibernate的灵活配置[Test]
NHibernate的灵活配置
publicvoidTestConfigMappingUseCode2()
NHibernate的灵活配置NHibernate的灵活配置
NHibernate的灵活配置{
NHibernate的灵活配置
//配置Configuration
NHibernate的灵活配置
Configurationcfg=newConfiguration().Configure(
NHibernate的灵活配置Assembly.GetExecutingAssembly(),
//当前代码正从中运行的程序集。
NHibernate的灵活配置
TestHelper.NAMEPLACENAME+".hibernate3.cfg.xml");
NHibernate的灵活配置
NHibernate的灵活配置
//加载和类对应的映射文件
NHibernate的灵活配置
cfg.AddClass(typeof(User));
NHibernate的灵活配置
NHibernate的灵活配置
//测试
NHibernate的灵活配置
TestHelper.CheckConfiguration(cfg);
NHibernate的灵活配置}

NHibernate的灵活配置
NHibernate的灵活配置NHibernate的灵活配置
/**////<summary>
NHibernate的灵活配置
///测试在代码中加载映射文件,使用文件
NHibernate的灵活配置
///hibernate3.cfg.xml中未设置映射类信息使用代码添加
NHibernate的灵活配置
///</summary>

NHibernate的灵活配置[Test]
NHibernate的灵活配置
publicvoidTestConfigMappingUseCode3()
NHibernate的灵活配置NHibernate的灵活配置
NHibernate的灵活配置{
NHibernate的灵活配置
//配置Configuration
NHibernate的灵活配置
Configurationcfg=newConfiguration().Configure(
NHibernate的灵活配置Assembly.GetExecutingAssembly(),
//当前代码正从中运行的程序集。
NHibernate的灵活配置
TestHelper.NAMEPLACENAME+".hibernate3.cfg.xml");
NHibernate的灵活配置
NHibernate的灵活配置
//加载和类对应的映射文件
NHibernate的灵活配置
cfg.AddFile("User.hbm.xml");
NHibernate的灵活配置
NHibernate的灵活配置
//测试
NHibernate的灵活配置
TestHelper.CheckConfiguration(cfg);
NHibernate的灵活配置}

NHibernate的灵活配置
NHibernate的灵活配置
#endregion

NHibernate的灵活配置}

NHibernate的灵活配置}

测试配置属性


NHibernate的灵活配置usingSystem.Collections;
NHibernate的灵活配置
usingSystem.Reflection;
NHibernate的灵活配置
usingNHibernate.Cfg;
NHibernate的灵活配置
usingNUnit.Framework;
NHibernate的灵活配置
NHibernate的灵活配置
namespaceDDLLY.MyDoc.NHibernateTest.ConfigurationTest.Test
NHibernate的灵活配置NHibernate的灵活配置
NHibernate的灵活配置{
NHibernate的灵活配置NHibernate的灵活配置
/**////<summary>
NHibernate的灵活配置
///测试配置属性的类
NHibernate的灵活配置
///</summary>

NHibernate的灵活配置[TestFixture]
NHibernate的灵活配置
publicclassConfigPropertyFixture
NHibernate的灵活配置NHibernate的灵活配置
NHibernate的灵活配置{
NHibernate的灵活配置NHibernate的灵活配置
SetUp和TearDown#regionSetUp和TearDown
NHibernate的灵活配置
NHibernate的灵活配置[SetUp]
NHibernate的灵活配置
publicvoidSetUp()
NHibernate的灵活配置NHibernate的灵活配置
NHibernate的灵活配置{
NHibernate的灵活配置
//添加名为LLY,密码为123456的用户,因为这是数据库的第一条记录,所以数据库标识为1
NHibernate的灵活配置
stringSetUpSql="INSERTINTOusers([UserName],[Password])VALUES('LLY','123456')";
NHibernate的灵活配置TestHelper.SqlExecuteNonQuery(SetUpSql);
NHibernate的灵活配置}

NHibernate的灵活配置
NHibernate的灵活配置[TearDown]
NHibernate的灵活配置
publicvoidTearDown()
NHibernate的灵活配置NHibernate的灵活配置
NHibernate的灵活配置{
NHibernate的灵活配置
//清空users表,并把标识(identity)清零
NHibernate的灵活配置
stringTearDownSql="TRUNCATETABLEusers";
NHibernate的灵活配置TestHelper.SqlExecuteNonQuery(TearDownSql);
NHibernate的灵活配置}

NHibernate的灵活配置
NHibernate的灵活配置
#endregion

NHibernate的灵活配置
NHibernate的灵活配置NHibernate的灵活配置
测试方法#region测试方法
NHibernate的灵活配置
NHibernate的灵活配置NHibernate的灵活配置
/**////<summary>
NHibernate的灵活配置
///测试在代码中配置属性
NHibernate的灵活配置
///</summary>

NHibernate的灵活配置[Test]
NHibernate的灵活配置
publicvoidTestConfigProperty()
NHibernate的灵活配置NHibernate的灵活配置
NHibernate的灵活配置{
NHibernate的灵活配置
//配置Configuration
NHibernate的灵活配置
Configurationcfg=newConfiguration().Configure(
NHibernate的灵活配置Assembly.GetExecutingAssembly(),
//当前代码正从中运行的程序集。
NHibernate的灵活配置
TestHelper.NAMEPLACENAME+".hibernate4.cfg.xml");
NHibernate的灵活配置
NHibernate的灵活配置
//hibernate4.cfg.xml未配置连接字符串属性,使用代码添加连接字符串属性
NHibernate的灵活配置
Hashtableproperties=newHashtable();
NHibernate的灵活配置properties.Add(Environment.ConnectionString,
//NHibernate.Cfg.Environment类中有所有的可属性信息
NHibernate的灵活配置
"server=.;database=user;uid=sa;pwd=App1234;");
NHibernate的灵活配置cfg.AddProperties(properties);
NHibernate的灵活配置
NHibernate的灵活配置
//测试
NHibernate的灵活配置
TestHelper.CheckConfiguration(cfg);
NHibernate的灵活配置}

NHibernate的灵活配置
NHibernate的灵活配置
#endregion

NHibernate的灵活配置}

NHibernate的灵活配置}

相关文章: