nhibernate配置经验

下载   NHibernate-2.1.2.GA-bin ,这个自己上网找

引用以下的dll

LinFu.DynamicProxy.dll

NHibernate.ByteCode.LinFu.dll

Iesi.Collections.dll

log4net.dll

NHibernate.dll

Antlr3.Runtime.dll

 

1 : 数据库的表

CREATE TABLE [dbo].[users](
    [LogonID] [nvarchar](20) COLLATE Chinese_PRC_CI_AS NOT NULL DEFAULT ('0'),
    [Name] [nvarchar](40) COLLATE Chinese_PRC_CI_AS NULL DEFAULT (NULL),
    [Password] [nvarchar](20) COLLATE Chinese_PRC_CI_AS NULL DEFAULT (NULL),
    [EmailAddress] [nvarchar](40) COLLATE Chinese_PRC_CI_AS NULL DEFAULT (NULL),
    [LastLogon] [datetime] NULL DEFAULT (NULL),
PRIMARY KEY CLUSTERED
(
    [LogonID] ASC
)WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]


2 : NHibernate.Examples.QuickStart项目全称 { 这里一定要注意每个字段要加上virtual}

namespace NHibernate.Examples.QuickStart
{
    class User
    {
        private string id;
        private string userName;
        private string password;
        private string emailAddress;
        private DateTime lastLogon;

        public User()
        {
        }

        public virtual string Id
        {
            get { return id; }
            set { id = value; }
        }

        public virtual string UserName
        {
            get { return userName; }
            set { userName = value; }
        }

        public virtual string Password
        {
            get { return password; }
            set { password = value; }
        }

        public virtual string EmailAddress
        {
            get { return emailAddress; }
            set { emailAddress = value; }
        }

        public virtual DateTime LastLogon
        {
            get { return lastLogon; }
            set { lastLogon = value; }
        }

    }
}


3 建立 *.hbm.xml文件


<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2">
  <class name="NHibernate.Examples.QuickStart.User, NHibernate.Examples.QuickStart" table="users"> <!--格式的内容是这样的 class name = "namespace+classname,namespace",table="数据库中表明"-->
    <id name="Id" column="LogonId" type="String" length="20">
      <generator class="assigned" />
    </id>
    <property name="UserName" column= "Name" type="String" length="40"/>
    <property name="Password" type="String" length="20"/>
    <property name="EmailAddress" type="String" length="40"/>
    <property name="LastLogon" type="DateTime"/>
  </class>
</hibernate-mapping>


4 : 编写自己的hibernate.cfg.xml { 这里不要用 <nhibernate>我用这个一直编不过,网上很多 把 <property name="connection.provider"> 写成了 <property name="hibernate.connection.provider"> .我发现这样在编译时会一直提示 name 什么无效,不符合什么 string枚举之类的}  确保app.config 或 web.config 没有此配置。


<?xml version="1.0" encoding="utf-8" ?>
  <hibernate-configuration xmlns="urn:nhibernate-configuration-2.2">
    <session-factory>
    <!--<nhibernate>-->
      <property name="connection.provider">NHibernate.Connection.DriverConnectionProvider</property>
      <property name="dialect">NHibernate.Dialect.MsSql2005Dialect</property>
      <property name="connection.driver_class">NHibernate.Driver.SqlClientDriver</property>
      <property name="connection.connection_string">Server=localhost;initial catalog=nhibernate;Integrated Security=SSPI</property>
      <property name="proxyfactory.factory_class">NHibernate.ByteCode.LinFu.ProxyFactoryFactory, NHibernate.ByteCode.LinFu</property>
      <mapping assembly="NHibernate.Examples.QuickStart"></mapping>
    </session-factory>
    <!--</nhibernate>-->
  </hibernate-configuration>

 


后话 : 系统在提前第四步的这段配置信息时,会检验 *.hbm.xml 跟第二步写的实体类。如果两个有错或不匹配的话,也会报错。

在做第四步配置是name的值可以参考下载文件中的 nhibernate-configuration.xsd 和nhibernate-mapping.xsd , 编译时会 一直提示 name 什么无效 就是值跟*.xsd里面的里面的不配对

 

 

加个第五步

 

NHibernate.Cfg.Configuration cfg = new NHibernate.Cfg.Configuration().Configure();
//cfg.AddAssembly("NHibernate.Examples.QuickStart");
return cfg;

 

有些文章写这里还要加 //cfg.AddAssembly("NHibernate.Examples.QuickStart");.如果配置文件已经加了,这个是不用的

 

这样返回就可以用了

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值