using System;
using System.Data;
using System.Reflection;
using NHibernate;
using NHibernate.Cfg;
using NHibernate.Tool.hbm2ddl;
问题一:“NHibernate”是一个什么样的命名空间???有什么作用,是微软的,还是第三方的???
namespace Finance.Common
{
//SessionFactory (NHibernate.ISessionFactory)对属于单一数据库的编译过的映射文件的一个线程安全的,不可变的缓存快照。
//它是Session的工厂,是ConnectionProvider的客户。
问题二:Session工厂是什么意思???就像数据库工厂似地???看不懂注释什么意思???
public class SessionFactory
{
public SessionFactory() { }
private static ISessionFactory sessions;
/// NHibernate.Cfg.Configuration的一个实例代表了应用程序中所有的.NET类到SQL数据库的映射的集合。
/// Configuration用于构造一个(不可变的)ISessionFactory。
/// 这些映射是从一些XML映射文件中编译得来的。
private static Configuration cfg;
static readonly object padlock = new object();
问题三:“Session”不是表示会话吗???怎么和Configuration扯到一起了???问题四:“NHibernate.Cfg.Configuration的一个实例代表了应用程序中所有的.NET类到SQL数据库的映射的集合。”这一句什么意思???什么叫“应用程序中所有的.NET类到SQL数据库的映射的集合”???
/// <summary>
/// 创建一个数据库链接,并且打开一个ISession
/// </summary>
/// <param name="AssemblyName">程序集名称</param>
/// <returns></returns>
public static ISession OpenSession(string AssemblyName)
{
if (sessions == null)
{
lock (padlock)
{
if (sessions == null)
{
BuildSessionFactory(AssemblyName);
}
}
}
return sessions.OpenSession();问题五:这个方法实现的是什么功能???什么样的处理过程???
} /// <summary>
/*--------------------------------------------------
当所有的映射都被Configuration解析之后,
应用程序为了得到ISession实例,必须先得到它的工厂。
这个工厂应该是被应用程序的所有线程共享的:
---------------------------------------------------*/
/// </summary>
/// <param name="AssemblyName"></param>
private static void BuildSessionFactory(string AssemblyName)
{
cfg = new Configuration();
//AddAssembly让NHibernate读取一个程序集中所有的配置文件
cfg.AddAssembly(AssemblyName);
//创建Session的工厂返回ISessionFactory
sessions = cfg.BuildSessionFactory();
问题六:“cfg = new Configuration();”方法在“NHibernate”中吧,它可以创建sessions对象???
在Bin文件夹下有一个“NHibernate.DLL”文件,但是不知它是干嘛的???
}
//创建数据库
public static void CreateDataBase(string AssemblyName)
{
cfg = new Configuration();
cfg.AddAssembly(AssemblyName);
SchemaExport sch = new SchemaExport(cfg);
sch.Create(true, true);
}
问题七:这个方法又是干嘛的???实现了什么功能???问题八:这个类实现的是什么???建立数据库连接还是控制打开会话??? }
}
谢谢大家,这里用到的东西小弟没有见到过啊
using System.Data;
using System.Reflection;
using NHibernate;
using NHibernate.Cfg;
using NHibernate.Tool.hbm2ddl;
问题一:“NHibernate”是一个什么样的命名空间???有什么作用,是微软的,还是第三方的???
namespace Finance.Common
{
//SessionFactory (NHibernate.ISessionFactory)对属于单一数据库的编译过的映射文件的一个线程安全的,不可变的缓存快照。
//它是Session的工厂,是ConnectionProvider的客户。
问题二:Session工厂是什么意思???就像数据库工厂似地???看不懂注释什么意思???
public class SessionFactory
{
public SessionFactory() { }
private static ISessionFactory sessions;
/// NHibernate.Cfg.Configuration的一个实例代表了应用程序中所有的.NET类到SQL数据库的映射的集合。
/// Configuration用于构造一个(不可变的)ISessionFactory。
/// 这些映射是从一些XML映射文件中编译得来的。
private static Configuration cfg;
static readonly object padlock = new object();
问题三:“Session”不是表示会话吗???怎么和Configuration扯到一起了???问题四:“NHibernate.Cfg.Configuration的一个实例代表了应用程序中所有的.NET类到SQL数据库的映射的集合。”这一句什么意思???什么叫“应用程序中所有的.NET类到SQL数据库的映射的集合”???
/// <summary>
/// 创建一个数据库链接,并且打开一个ISession
/// </summary>
/// <param name="AssemblyName">程序集名称</param>
/// <returns></returns>
public static ISession OpenSession(string AssemblyName)
{
if (sessions == null)
{
lock (padlock)
{
if (sessions == null)
{
BuildSessionFactory(AssemblyName);
}
}
}
return sessions.OpenSession();问题五:这个方法实现的是什么功能???什么样的处理过程???
} /// <summary>
/*--------------------------------------------------
当所有的映射都被Configuration解析之后,
应用程序为了得到ISession实例,必须先得到它的工厂。
这个工厂应该是被应用程序的所有线程共享的:
---------------------------------------------------*/
/// </summary>
/// <param name="AssemblyName"></param>
private static void BuildSessionFactory(string AssemblyName)
{
cfg = new Configuration();
//AddAssembly让NHibernate读取一个程序集中所有的配置文件
cfg.AddAssembly(AssemblyName);
//创建Session的工厂返回ISessionFactory
sessions = cfg.BuildSessionFactory();
问题六:“cfg = new Configuration();”方法在“NHibernate”中吧,它可以创建sessions对象???
在Bin文件夹下有一个“NHibernate.DLL”文件,但是不知它是干嘛的???
}
//创建数据库
public static void CreateDataBase(string AssemblyName)
{
cfg = new Configuration();
cfg.AddAssembly(AssemblyName);
SchemaExport sch = new SchemaExport(cfg);
sch.Create(true, true);
}
问题七:这个方法又是干嘛的???实现了什么功能???问题八:这个类实现的是什么???建立数据库连接还是控制打开会话??? }
}
谢谢大家,这里用到的东西小弟没有见到过啊
这里的sessions跟.net里的Session不一样的。。BuildSessionFactory构造一个对象Nhibernate 通过linfu castle 等proxy 来构建session 通过session来增删改查可以去看看 李永京 或者刘冬的文章
我随便答几个吧
Nhibernate是个开源项目,第三方的。
这里Session和Asp.net的Session是不同的东西。
你找点Nhibernate的文档看看,上面问题就全明白了
http://kb.cnblogs.com/zt/nhibernate/