惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

P
Proofpoint News Feed
Martin Fowler
Martin Fowler
The GitHub Blog
The GitHub Blog
B
Blog RSS Feed
U
Unit 42
阮一峰的网络日志
阮一峰的网络日志
量子位
GbyAI
GbyAI
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
云风的 BLOG
云风的 BLOG
小众软件
小众软件
博客园 - 三生石上(FineUI控件)
L
LangChain Blog
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
博客园_首页
IT之家
IT之家
V
Visual Studio Blog
Y
Y Combinator Blog
Blog — PlanetScale
Blog — PlanetScale
宝玉的分享
宝玉的分享
Apple Machine Learning Research
Apple Machine Learning Research
I
InfoQ
D
Docker
V
V2EX

博客园 - 阿修罗一平

IIS部署WCF出现的各种问题汇总 Infragistics控件的工具栏注册 NUnit的使用中可能遇到的问题 Linq备忘 Nihibernate的重要知识点 Devexpress使用记录 使用List数据集合,利用DevExpress.XtraReports开发Master-Detail报表 PDA访问WCF PDA(WinCE)项目开发中遇到的问题及解决方法总结 Grid控件绑定bindingSource后在新增行时设置Cell的初始值 “BindingSource绑定单个实体对象后在代码中赋值无效和无法显示”的解决方法 sqlservier2005转成sqlserver2000中出现的问题(WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY]) 项目考虑因素及解决方案(.net) 设计模式在工作中的应用(三) 设计模式在工作中的应用(二) 设计模式在工作中的应用(一) Remoting服务集成到IIS的简单总结 关于Remoting服务启动和停止的简单总结 将公司系统从SqlServer 2K移植到Oracle 10g中的简要总结
NHibernate示例
阿修罗一平 · 2007-09-29 · via 博客园 - 阿修罗一平

第一步:创建数据库
创建表:users
LoginID varchar 50 
UserName varchar 50 
Password varchar 50 

第二步:创建实体(可以利用工具生成)
在Entity.csproj中添加User.cs文件

namespace Entity
{
    public class User
    {
        private string loginID;
        private string userName;
        private string password;

        public virtual string LoginID
        {
            get { return loginID; }
            set { loginID = value; }
        }

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

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

创建实体映射文件User.hbm.xml(此文件必须是嵌入式资源)

<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.0">
  <class name="Entity.User,Entity" table="Users">
    <id name="LoginID" column="LoginID" type="String"  unsaved-value="">
      <generator class="assigned" />
    </id>
    <property name="UserName" column="UserName" type="String" />
    <property name="Password" column="Password" type="String" /> 
  </class>
</hibernate-mapping>

第三步:客户端创建

hibernate.cfg.xml配置文件
<?xml version="1.0" encoding="utf-8" ?>
  <hibernate-configuration  xmlns="urn:nhibernate-configuration-2.0" >
    <session-factory name="NH">
      <property name="connection.provider">NHibernate.Connection.DriverConnectionProvider</property>     
      <property name="connection.driver_class">NHibernate.Driver.SqlClientDriver</property>
      <property name="dialect">NHibernate.Dialect.MsSql2000Dialect</property>
      <property name="connection.connection_string">Server=localhost;initial catalog=systemframework;uid=sa;pwd=</property>
      </session-factory>
    </hibernate-configuration>

第四步:客户端调用

Configuration cfg = new Configuration().Configure();
            cfg.AddAssembly("Entity");
            ISessionFactory factory = cfg.BuildSessionFactory();
            ISession session = factory.OpenSession();
            ITransaction trans = session.BeginTransaction();           
            Entity.User user = new Entity.User ();
            user.LoginID = "2";
            user.UserName = "test";
            user.Password = "test";
           
            try
            {
                session.Save(user);
                trans.Commit();
            }
            catch(Exception ex)
            {
                trans.Rollback();
                System.Windows.Forms.MessageBox.Show(ex.Message);
            }

            数据库中新插入LoginID是2的用户,保存成功。

            终于得到想要的结果了,感觉很开心,这是成功的一半。(2007年9月29日 星期六 19:38:50)