添加一个 新建工程 guestbook.Dal
我把Sessionfactory 和 EntityControl分成了两个文件其主要代码为
using
System;
using System.Reflection;
using System.Data;
using System.Data.SqlClient;
using NHibernate;
using NHibernate.Cfg;
using NHibernate.Dialect;
using NHibernate.Tool.hbm2ddl;
using guestbook.data;
namespace guestbook.Dal
{
/**//// <summary>
/// SessionFactory 的摘要说明。
/// </summary>
public class SessionFactory
{
private static ISessionFactory sessions;
private static Configuration cfg;
private static Dialect dialect;
public SessionFactory()
{
//
// TODO: 在此处添加构造函数逻辑
//
}
public static ISession OpenSession()
{
if(sessions==null)
{
BuildSessionFactory();
}
return sessions.OpenSession();
}
private static void BuildSessionFactory()
{
ExportSchema(new string[]{
"users.hbm.xml",
"guestbook.hbm.xml"
},true);
}
private static void ExportSchema(string[] files,bool exportschema)
{
cfg=new Configuration();
for(int i=0;i<files.Length;i++)
{
cfg.AddResource("guestbook.data.hbm."+files[i],Assembly.Load("guestbook.data"));
}
dialect=Dialect.GetDialect();
if(exportschema) new SchemaExport(cfg).Create(true,true);
sessions=cfg.BuildSessionFactory();
}
}
}
using System.Reflection;
using System.Data;
using System.Data.SqlClient;
using NHibernate;
using NHibernate.Cfg;
using NHibernate.Dialect;
using NHibernate.Tool.hbm2ddl;
using guestbook.data;
namespace guestbook.Dal
{
/**//// <summary>
/// SessionFactory 的摘要说明。
/// </summary>
public class SessionFactory
{
private static ISessionFactory sessions;
private static Configuration cfg;
private static Dialect dialect;
public SessionFactory()
{
//
// TODO: 在此处添加构造函数逻辑
//
}
public static ISession OpenSession()
{
if(sessions==null)
{
BuildSessionFactory();
}
return sessions.OpenSession();
}
private static void BuildSessionFactory()
{
ExportSchema(new string[]{
"users.hbm.xml",
"guestbook.hbm.xml"
},true);
}
private static void ExportSchema(string[] files,bool exportschema)
{
cfg=new Configuration();
for(int i=0;i<files.Length;i++)
{
cfg.AddResource("guestbook.data.hbm."+files[i],Assembly.Load("guestbook.data"));
}
dialect=Dialect.GetDialect();
if(exportschema) new SchemaExport(cfg).Create(true,true);
sessions=cfg.BuildSessionFactory();
}
}
}
using
System;
using NHibernate;
using guestbook.data;
namespace guestbook.Dal
{
/**//// <summary>
/// EntityContorl 的摘要说明。
/// </summary>
public class EntityControl
{
private static EntityControl entity;
public static EntityControl CreateEntityControl()
{
if(entity==null)
{
entity=new EntityControl();
}
return entity;
}
public void addEntity(Object entity)
{
ISession s=SessionFactory.OpenSession();
ITransaction t=s.BeginTransaction();
try
{
s.Save(entity);
t.Commit();
}
catch(Exception e)
{
t.Rollback();
throw e;
}
finally
{
s.Close();
}
}
public void updateEntity(Object entity,Object key)
{
ISession s=SessionFactory.OpenSession();
ITransaction t=s.BeginTransaction();
try
{
s.Update(entity,key);
t.Commit();
}
catch(Exception e)
{
t.Rollback();
throw e;
}
finally
{
s.Close();
}
}
public void DelEntity(object entity)
{
ISession s=SessionFactory.OpenSession();
ITransaction t=s.BeginTransaction();
try
{
s.Delete(entity);
t.Commit();
}
catch(Exception e)
{
t.Rollback();
throw e;
}
finally
{
s.Close();
}
}
}
}
using NHibernate;
using guestbook.data;
namespace guestbook.Dal
{
/**//// <summary>
/// EntityContorl 的摘要说明。
/// </summary>
public class EntityControl
{
private static EntityControl entity;
public static EntityControl CreateEntityControl()
{
if(entity==null)
{
entity=new EntityControl();
}
return entity;
}
public void addEntity(Object entity)
{
ISession s=SessionFactory.OpenSession();
ITransaction t=s.BeginTransaction();
try
{
s.Save(entity);
t.Commit();
}
catch(Exception e)
{
t.Rollback();
throw e;
}
finally
{
s.Close();
}
}
public void updateEntity(Object entity,Object key)
{
ISession s=SessionFactory.OpenSession();
ITransaction t=s.BeginTransaction();
try
{
s.Update(entity,key);
t.Commit();
}
catch(Exception e)
{
t.Rollback();
throw e;
}
finally
{
s.Close();
}
}
public void DelEntity(object entity)
{
ISession s=SessionFactory.OpenSession();
ITransaction t=s.BeginTransaction();
try
{
s.Delete(entity);
t.Commit();
}
catch(Exception e)
{
t.Rollback();
throw e;
}
finally
{
s.Close();
}
}
}
}
写一个应用类试试
using
System;
using NHibernate;
using guestbook.data;
namespace guestbook.Dal
{
/**//// <summary>
/// usersdal 的摘要说明。
/// </summary>
public class usersdal
{
private EntityControl control;
public usersdal()
{
control=EntityControl.CreateEntityControl();
}
public void addUser(users user)
{
control.addEntity(user);
}
public void updateUser(users user,int Id)
{
control.updateEntity(user,user.id);
}
public void DelUser(users user)
{
control.DelEntity(user);
}
}
}
using NHibernate;
using guestbook.data;
namespace guestbook.Dal
{
/**//// <summary>
/// usersdal 的摘要说明。
/// </summary>
public class usersdal
{
private EntityControl control;
public usersdal()
{
control=EntityControl.CreateEntityControl();
}
public void addUser(users user)
{
control.addEntity(user);
}
public void updateUser(users user,int Id)
{
control.updateEntity(user,user.id);
}
public void DelUser(users user)
{
control.DelEntity(user);
}
}
}
在写个测试文件
using
System;
using System.Collections;
using NHibernate;
using NHibernate.Cfg;
using NUnit.Framework;
using guestbook.data;
using guestbook.Dal;
namespace guestbook.test.daltest
{
/**//// <summary>
/// user 的摘要说明。
/// </summary>
[TestFixture]
public class user
{
public user()
{
//
// TODO: 在此处添加构造函数逻辑
//
}
[Test]public void AddDalUser()
{
users newUser=new users();
newUser.Name="Pb";
newUser.email="cctv5cn@gmail.com";
newUser.password="147852";
newUser.flag=1;
newUser.regtime=DateTime.Now;
usersdal ud=new usersdal();
ud.addUser(newUser);
}
}
}
using System.Collections;
using NHibernate;
using NHibernate.Cfg;
using NUnit.Framework;
using guestbook.data;
using guestbook.Dal;
namespace guestbook.test.daltest
{
/**//// <summary>
/// user 的摘要说明。
/// </summary>
[TestFixture]
public class user
{
public user()
{
//
// TODO: 在此处添加构造函数逻辑
//
}
[Test]public void AddDalUser()
{
users newUser=new users();
newUser.Name="Pb";
newUser.email="cctv5cn@gmail.com";
newUser.password="147852";
newUser.flag=1;
newUser.regtime=DateTime.Now;
usersdal ud=new usersdal();
ud.addUser(newUser);
}
}
}
天啊 ,失败了, ,提示错误,
guestbook.test.daltest.user.AddDalUser : NHibernate.MappingException :
Resource: guestbook.guestbook.data.hbm.users.hbm.xml not found
Resource: guestbook.guestbook.data.hbm.users.hbm.xml not found
这也是我提前写这篇文章的原因,大侠们 救命 啊,