User.cs
using System;
using System.Data;
using System.Configuration;
using System.Web;
namespace ConsoleObj
{
/// <summary>
/// User 的摘要说明
/// </summary>
public 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; }
}
}
}
User.hbm.xml
<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" namespace="ConsoleObj" assembly="ConsoleObj">
<class name="User" table="users">
<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>
App.config
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<!-- Configuration Sections In This File -->
<configSections>
<!-- NHibernate Section -->
<section
name="hibernate-configuration"
type="NHibernate.Cfg.ConfigurationSectionHandler,NHibernate"
/>
</configSections>
<!-- NHibernate Configuration -->
<hibernate-configuration xmlns="urn:nhibernate-configuration-2.2">
<session-factory>
<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">
Data Source=.;Initial Catalog=test;Integrated Security=True;Pooling=False
</property>
</session-factory>
</hibernate-configuration>
</configuration>
调用:
class Program
{
static void Main(string[] args)
{
Configuration cfg = new Configuration();
cfg.Configure();
Assembly assembly = typeof(User).Assembly;
cfg.AddAssembly(assembly);
ISessionFactory factory = cfg.BuildSessionFactory();
ISession session = factory.OpenSession();
ITransaction tran = session.BeginTransaction();
User newUser = new User();
newUser.Id = "joe_cool";
newUser.UserName = "Joseph Cool";
newUser.Password = "abc123";
newUser.EmailAddress = "joe@cool.com";
newUser.LastLogon = DateTime.Now;
session.Save(newUser);
tran.Commit();
session.Close();
Console.Write("成功!");
Console.Read();
}
}
学NHibernate我也是第一次接触,我用了一天的时间才弄明白怎么把它配制好。因为C#与ASP。NET的配制不一样,在C#里面必须把User.hbm.xml文件设成嵌入式资料,不然session打不开,不能工作。而在ASP。NET页面中也是这样,不过在WEB项目中不知道在哪里设置,所以一直没有怎么去弄,打算有时间弄懂,下次继续!