C#—Nhibernate探索教程
2021-03-29 02:25
标签:odi 测试的 ping sof bsp 文件的 mssql init pre C#—Nhibernate探索 本篇文章,让我们一起来探索Nhibernate。 首先我们去搜索Nhibernate下载地址,如下链接所示。 该版本可能是最新版,我下载的4.0.4.GA。其中GA意思我没搞清楚。不过应该不重要。 https://sourceforge.net/projects/nhibernate/ 下载完成后,解压缩如图所示。 其中Required_Bins存储的是类库和其他资源;字面的意思Required,是必须文件。 打开Required文件夹,里是这样的。 两个类库;两个类库是要被引用的。 类库拥有对应的XML,没找到具体使用该XML的方法。所以暂时不去理他。 NHibernate.pdb应该是没有用的。估计是作者忘记删除了。 nhibernate-configuration.xsd和nhibernate-mapping.xsd是要放到c盘的,路径如下: C:\Program Files (x86)\Microsoft Visual Studio 11.0\Xml\Schemas 因为是我用的是vs2012,所以,我找的路径是Microsoft Visual Studio 11.0。 我上网上调查了下这两个文件是做什么用的。调查结果是,这俩货是【文件智能提示功能】用的。 上网调查后,发现Nhibernate有Castle框架、LinFu框架、Spring.Net三种。 看起来很复杂,不过先不去管那么多,先直接引用类库。 然后我建立了一个类库程序,引用Iesi.Collections.dll和NHibernate.dll两个DLL。 接下来,我们开始建立持久化对象。 对象与数据库的映射是保存在XML文件中的,我们配置XML映射文件如下。 该XML文件的属性,要求设置其生成操作为【嵌入的资源】。 此外,我怕它丢失,还给他设置了始终复制的属性。 XML文件如下: 再然后,我们建立数据库连接的类。 因为我们没有显示设置数据库连接字符串,所以,我猜测这个类,会读配置文件中SQL字符串连接。 然后,我们建立domain(域),添加增删改查的方法。 然后,我们新建一个控制台程序,用来调用这个类库测试。 测试类代码如下。 调用如下: 测试结果是失败,因为缺少配置数据库连接的文件。 现在我们打开文件夹Configuration_Templates,发现Configuration_Templates文件夹下有如下文件。 我使用的数据库是sqlserver,所以,我复制了mssql.cfg.xml。 然后将复制的文件,黏贴到测试的控制台程序下,然后改名为《hibernate.cfg.xml》。 这里测试了下,貌似不改名不好使,配置文件内容如下 【PS:我始终没搞懂,XML中的CFG代表什么意思。】 我连接的是sqlserver2012,所以配置文件里,我有做修改,修改驱动为NHibernate.Dialect.MsSql2012Dialect。原始版是2008。 其中 这句话的意思是,映射我创建的那个类库。 我推断,Nherbinate是读这个配置文件,然后到这个程序集里,反射查询那些poco对象。 最后,nhibernate-configuration-2.2这句话我想了很久要不要改成4.0。 结果是我没改,测试一切正常。可以顺利使用。 结语 这是一场Nhibernate探索之旅,结果是非常顺利的配置成功了。 C#—Nhibernate探索教程 标签:odi 测试的 ping sof bsp 文件的 mssql init pre 原文地址:https://www.cnblogs.com/kiba/p/9306668.htmlpublic class Test
{
public virtual int Id { get; set; }
public virtual string Name { get; set; }
}
public class NHibernateHelper
{
private ISessionFactory _sessionFactory;
public NHibernateHelper()
{
_sessionFactory = GetSessionFactory();
}
private ISessionFactory GetSessionFactory()
{
return (new Configuration()).Configure().BuildSessionFactory();
}
public ISession GetSession()
{
return _sessionFactory.OpenSession();
}
}
public class NHibernateSample
{
protected ISession Session { get; set; }
public NHibernateSample(ISession session)
{
Session = session;
}
public void CreateCustomer(Test test)
{
Session.Save(test);
Session.Flush();
}
public Test GetCustomerById(int Id)
{
return Session.Get
public class NHibernateSampleFixture
{
private NHibernateSample _sample;
public NHibernateSampleFixture()
{
_sample = new NHibernateSample(new NHibernateHelper().GetSession());
}
public void GetCustomerByIdTest()
{
var tempCutomer = new Test { Name = "李" };
_sample.CreateCustomer(tempCutomer);
Test customer = _sample.GetCustomerById(1);
int customerId = customer.Id;
}
}
class Program
{
static void Main(string[] args)
{
NHibernateSampleFixture f = new NHibernateSampleFixture();
f.GetCustomerByIdTest();
}
}