Nhibernate学习教程一 简单的应用
2009-08-04 11:38
453 查看
Nhibernate学习教程一 简单的应用
其实网络里有了很多相关的资料和资源.因为第一次接触nbernate的人不少,可惜会遇到很多不同的问题.特意把我自己在使用的过程中遇到的问题给大家讲解一下.希望对新手有少少作用
网络里的例子 nhibernate1.2版本 +sqlserver2005+ vs2003
1.建立一个项目,名字叫ClassLibrary
2.新建立一个类 user
Code
using System;
using System.Collections.Generic;
using System.Text;
namespace ClassLibrary
{
public class User
{
private string id;
private string userName;
private string password;
private string emailAddress;
private DateTime lastLogon;
public User()
{
}
public string Id
{
get { return id; }
set { id = value; }
}
public string UserName
{
get { return userName; }
set { userName = value; }
}
public string Password
{
get { return password; }
set { password = value; }
}
public string EmailAddress
{
get { return emailAddress; }
set { emailAddress = value; }
}
public DateTime LastLogon
{
get { return lastLogon; }
set { lastLogon = value; }
}
}
}
3. 新建立一个xml文件 User.hbm.xml
这里要注意这一段<class name="ClassLibrary.User, ClassLibrary" table="users" lazy="false">
有一点必须注意的是,必须把该xml文件右键属性设置为生成操作-->嵌入的资源
ClassLibrary是你的程序集名称和默认空间
Code
<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2">
<class name="ClassLibrary.User, ClassLibrary" table="users" lazy="false">
<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.编译好dll文件
5.新增加一个项目Nhibernate1 (使用的是sqlserver2005数据库)
添加一个app.config文件
Code
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
<section
name="nhibernate"
type="System.Configuration.NameValueSectionHandler, System, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
/>
</configSections>
<nhibernate>
<add key="hibernate.connection.provider"
value="NHibernate.Connection.DriverConnectionProvider"
/>
<add key="hibernate.dialect"
value="NHibernate.Dialect.MsSql2005Dialect"
/>
<add key="hibernate.connection.driver_class"
value="NHibernate.Driver.SqlClientDriver"
/>
<add key="hibernate.connection.connection_string"
value="Server=a059\PMSERVER;initial catalog=test;User ID=sa;Password=;"
/>
</nhibernate>
</configuration>
6.在test库里建立一个数据表 User
7.建立一个窗体.然后把下面代码贴入
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using NHibernate;
using NHibernate.Cfg;
Using ClassLibrary;
namespace Nhibernate1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
Configuration cfg = new Configuration();
cfg.AddAssembly("ClassLibrary");
ISessionFactory factory = cfg.BuildSessionFactory();
ISession session = factory.OpenSession();
ITransaction transaction = session.BeginTransaction();
User newUser = new User();
newUser.Id = "joe_cool_test";
newUser.UserName = "Joseph Cool";
newUser.Password = "abc123";
newUser.EmailAddress = "joe@cool.com";
newUser.LastLogon = DateTime.Now;
// Tell NHibernate that this object should be saved
session.Save(newUser);
// commit all of the changes to the DB and close the ISession
transaction.Commit();
session.Close();
MessageBox.Show("OK!");
}
}
}
遇到的错误
1.
NHibernate.MappingException: Unknown entity class:
把xml文件嵌入的资源一般可以解决
2.
cfg.AddAssembly("Nhibernate12");
未处理MappingException
Could not add assembly Nhiberate
把库类设置好一般都可以解决该问题
3.Winform其实不必要分开两个项目来实现,可以使用一个项目来实现的,原理一致
4.因为ASP.NET没有办法设置namespace,WebForm所以引用两个项目就有必要,按照上面的代码 ASP.Net测试也成功
其实网络里有了很多相关的资料和资源.因为第一次接触nbernate的人不少,可惜会遇到很多不同的问题.特意把我自己在使用的过程中遇到的问题给大家讲解一下.希望对新手有少少作用
网络里的例子 nhibernate1.2版本 +sqlserver2005+ vs2003
1.建立一个项目,名字叫ClassLibrary
2.新建立一个类 user
Code
using System;
using System.Collections.Generic;
using System.Text;
namespace ClassLibrary
{
public class User
{
private string id;
private string userName;
private string password;
private string emailAddress;
private DateTime lastLogon;
public User()
{
}
public string Id
{
get { return id; }
set { id = value; }
}
public string UserName
{
get { return userName; }
set { userName = value; }
}
public string Password
{
get { return password; }
set { password = value; }
}
public string EmailAddress
{
get { return emailAddress; }
set { emailAddress = value; }
}
public DateTime LastLogon
{
get { return lastLogon; }
set { lastLogon = value; }
}
}
}
3. 新建立一个xml文件 User.hbm.xml
这里要注意这一段<class name="ClassLibrary.User, ClassLibrary" table="users" lazy="false">
有一点必须注意的是,必须把该xml文件右键属性设置为生成操作-->嵌入的资源
ClassLibrary是你的程序集名称和默认空间
Code
<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2">
<class name="ClassLibrary.User, ClassLibrary" table="users" lazy="false">
<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.编译好dll文件
5.新增加一个项目Nhibernate1 (使用的是sqlserver2005数据库)
添加一个app.config文件
Code
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
<section
name="nhibernate"
type="System.Configuration.NameValueSectionHandler, System, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
/>
</configSections>
<nhibernate>
<add key="hibernate.connection.provider"
value="NHibernate.Connection.DriverConnectionProvider"
/>
<add key="hibernate.dialect"
value="NHibernate.Dialect.MsSql2005Dialect"
/>
<add key="hibernate.connection.driver_class"
value="NHibernate.Driver.SqlClientDriver"
/>
<add key="hibernate.connection.connection_string"
value="Server=a059\PMSERVER;initial catalog=test;User ID=sa;Password=;"
/>
</nhibernate>
</configuration>
6.在test库里建立一个数据表 User
7.建立一个窗体.然后把下面代码贴入
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using NHibernate;
using NHibernate.Cfg;
Using ClassLibrary;
namespace Nhibernate1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
Configuration cfg = new Configuration();
cfg.AddAssembly("ClassLibrary");
ISessionFactory factory = cfg.BuildSessionFactory();
ISession session = factory.OpenSession();
ITransaction transaction = session.BeginTransaction();
User newUser = new User();
newUser.Id = "joe_cool_test";
newUser.UserName = "Joseph Cool";
newUser.Password = "abc123";
newUser.EmailAddress = "joe@cool.com";
newUser.LastLogon = DateTime.Now;
// Tell NHibernate that this object should be saved
session.Save(newUser);
// commit all of the changes to the DB and close the ISession
transaction.Commit();
session.Close();
MessageBox.Show("OK!");
}
}
}
遇到的错误
1.
NHibernate.MappingException: Unknown entity class:
把xml文件嵌入的资源一般可以解决
2.
cfg.AddAssembly("Nhibernate12");
未处理MappingException
Could not add assembly Nhiberate
把库类设置好一般都可以解决该问题
3.Winform其实不必要分开两个项目来实现,可以使用一个项目来实现的,原理一致
4.因为ASP.NET没有办法设置namespace,WebForm所以引用两个项目就有必要,按照上面的代码 ASP.Net测试也成功
相关文章推荐
- Nhibernate学习教程一 简单的应用
- Nhibernate学习教程一 简单的应用
- 中科院计算所开源Easy Machine Learning:让机器学习应用开发简单快捷 By 机器之心2017年6月13日 13:05 今日,中科院计算所研究员徐君在微博上宣布「中科院计算所开源了
- NHibernate学习手记(1) - 对象的简单CRUD操作
- Nhibernate学习教程二 实际表的增删操作
- NHibernate1.2 的配置和简单应用!!!!
- samba 简单应用教程 只上传 只写不删除
- nhibernate学习之简单组合的映射
- phpwind代码分析之global.php简单说明(主要学习php基础知识的应用)
- 2011斯坦福大学iOS应用开发教程学习笔记(第八课)viewController生命周期
- Visual Studio 2017中使用正则修改部分内容 如何使用ILAsm与ILDasm修改.Net exe(dll)文件 C#学习-图解教程(1):格式化数字字符串 小程序开发之图片转Base64(C#、.Net) jquery遍历table为每一个单元格取值及赋值 。net加密解密相关方法 .net关于坐标之间一些简单操作
- linux——学习篇(三)之makefile的简单应用及实现简单的进度条
- Android基础教程(三)之-----简单的Button事件响应综合提示控件Toast的应用
- 斯坦福大学iOS应用开发教程学习笔记(第二课) 计算器实现(mvc实战)
- FNetworking官网入门教程简单翻译,学习
- 学习Swift的IOS应用的代码教程-5:让应用变的美观
- 2011斯坦福大学iOS应用开发教程学习笔记(第一课)MVC.and.Introduction.to.Objective-C
- Flume学习笔记-windows简单应用
- YII Framework学习教程-用YIIC快速创建YII应用之二-2011-11-11
- nodejs入门教程二:创建一个简单应用示例