NHibernate 基础

install-package nhibernate

install-package nunit

  Customer.cs

    public class Customer
        {
               public virtual Guid ID { get; set; }
               public virtual string Name { get; set; }
               public virtual string City { get; set; }

        }
Customer.hbm.xml

<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping  xmlns="urn:nhibernate-mapping-2.2" assembly="NHi.Domain"  namespace="NHi.Domain.Entities">
    <class name="Customer" table="Customer">
        <id name="ID" column="ID" type="Guid" >
            <generator class="assigned" />
        </id>
        <property name="Name" type="string">
            <column name="Name" sql-type="varchar(20)" not-null="false" />
        </property>
        <property name="City" type="string">
            <column name="City" sql-type="nvarchar(500)" not-null="false" />
        </property>
    </class>
</hibernate-mapping>
hibernate.cfg.xml

<?xml version="1.0" encoding="utf-8"?>
<hibernate-configuration  xmlns="urn:nhibernate-configuration-2.2" >
    <session-factory name="NHi.Test">
        <property name="connection.driver_class">NHibernate.Driver.SqlClientDriver</property>
        <property name="connection.connection_string">server=local;database=NHiDemo;uid=sa;pwd=123456;</property>
    <property name="dialect">NHibernate.Dialect.MsSql2008Dialect</property>
    <property name="hbm2ddl.auto">update</property>  <!--貌似只能添加列,对删除列,修改类型/长度不起作用,待续。。。-->
      <mapping assembly="NHi.Domain"/>
    </session-factory>
</hibernate-configuration>
BaseTest.cs

public  class BaseTest
        {
                protected ISessionFactory sessionFactory;

                [SetUp]
                public void Init()
                {
                        var cfg = new NHibernate.Cfg.Configuration().Configure("Config/hibernate.cfg.xml");
                        sessionFactory = cfg.BuildSessionFactory();
                }
        }
CustomerTest.cs
[TestFixture]
public class CustomerTest:BaseTest
{
  
        [Test]
        public void Add()
        {
                object o = null;

                using (ISession session = sessionFactory.OpenSession())
                {
                        var customer = new NHi.Domain.Entities.Customer()
                        {
                                ID = Guid.NewGuid(),
                                Name = "your name",
                                City = "my city"
                        };

                        o=session.Save(customer);
                        session.Flush();
                }

                Assert.NotNull(o);
        }
}

时间: 2024-11-17 07:12:35

NHibernate 基础的相关文章

3. NHibernate基础知识 - 你必须知道的一些事情

首先介绍一下框架结构(这个有个概念就可以): 然后我们会介绍一个很重要的概念(一定要好看)!! 这节对 NHibernate 架构做一个介绍,首先要了解一下该框架在应用程序中的位置: 先来一个简单的图: 正如你看见的一样,NHibernate 处于应用程序和数据库中间,作用呢?举个例子: NHibernate 就好比图书馆的管理员,无论你借书还是还书,只需要告诉管理员,管理员把剩下的事都替你解决了. 再来一张详细点的图: 这个图简单的说,能看出来,NHibernate中有两个“组件”,Sessi

Nhibernate基础使用教程以及简易封装

1.Nhibernate简介 NHibernate是一个面向.NET环境的对象/关系数据库映射工具.对象/关系数据库映射(object/relational mapping,ORM)这个术语表示一种技术,用来把对象模型表示的对象映射到基于SQL的关系模型数据结构中去 简单的说就是将数据库的结构直接映射到实体模型之上,从而简化SQL的数据处理时间.通过XML(Fluent亦可)进行定义数据模型的持久化,nhibernate 内部的映射结构以及如图1-1所示: 2.准备 Nhibernate类库,下

NHibernate官方文档中文版--基础ORM(Basic O/R Mapping)

映射声明 对象/关系映射在XML文件中配置.mapping文件这样设计是为了使它可读性强并且可修改.mapping语言是以对象为中心,意味着mapping是围绕着持久化类声明来建立的,而不是围绕数据表. 要注意的是,尽管很多NHibernate使用者选择手动定义XML文件,但是仍然有很多工具可以用来生成mapping文件,包括NHibernate.Mapping.Attributes 库和各种各样基于模板的代码生成工具(CodeSmith, MyGeneration). 让我们用一个mappin

NHibernate框架与BLL+DAL+Model+Controller+UI 多层架构十分相似--『Spring.NET+NHibernate+泛型』概述、知识准备及介绍(一)

原文://http://blog.csdn.net/wb09100310/article/details/47271555 1. 概述 搭建了Spring.NET+NHibernate的一个数据查询系统.之前没用过这两个框架,也算是先学现买,在做完设计之 后花了一周搭建成功了.其中,还加上了我的一些改进思想,把DAO和BLL之中相似且常用的增删改查通过泛型T抽象到了DAO和BLL的父类中,其DAO 和BLL子类只需继承父类就拥有了这些方法.和之前的一个数据库表(视图)对应一个实体,一个实体对应一

NHibernate初入门之映射文件配置说明(三)

转载逆心http://www.cnblogs.com/kissdodog/archive/2013/02/21/2919886.html 1. hibernate-mapping 这个元素包括以下可选的属性.schema属性,指明了这个映射所引用的表所在的schema名称.假若指定了这个属性, 表名会加上所指定的schema的名字扩展为全限定名.假若没有指定,表名就不会使用全限定名.default-cascade 指定了未明确注明cascade属性的.Net属性和集合类.Net会采取什么样的默认

NHibernate之映射文件配置说明

NHibernate之映射文件配置说明 1. hibernate-mapping 这个元素包括以下可选的属性.schema属性,指明了这个映射所引用的表所在的schema名称.假若指定了这个属性, 表名会加上所指定的schema的名字扩展为全限定名.假若没有指定,表名就不会使用全限定名.default-cascade 指定了未明确注明cascade属性的.Net属性和集合类.Net会采取什么样的默认级联风格. auto-import属性默认让我们在查询语言中可以使用非全限定名的类名.assemb

NHibernate之映射文件配置说明(转载2)

六.鉴别器 在"一棵对象继承树对应一个表"的策略中,<discriminator>元素是必需的, 它定义了表的鉴别器字段. 鉴别器字段包含标志值,用于告知持久化层应该为某个特定的行创建哪一个子类的实例. 如下这些受到限制的类型可以使用: String, Char, Int32,Byte, Short, Boolean , YesNo, TrueFalse. <discriminator column="discriminator_column" (

[转]NHibernate之映射文件配置说明

1. hibernate-mapping 这个元素包括以下可选的属性.schema属性,指明了这个映射所引用的表所在的schema名称.假若指定了这个属性, 表名会加上所指定的schema的名字扩展为全限定名.假若没有指定,表名就不会使用全限定名.default-cascade 指定了未明确注明cascade属性的.Net属性和集合类.Net会采取什么样的默认级联风格. auto-import属性默认让我们在查询语言中可以使用非全限定名的类名.assembly和 namespace指定了持久化类

NHibernate3剖析:Mapping篇之ConfORM实战(1):概览

ORuM思想浮出 对于ORM(Object Relational Mapping)我们太熟悉了,可是我们从还有一个角度能够想象出ORuM(Object Relational un-Mapping)的思想理念. 我们在程序中只定义Domain, 而想有个工具能够帮助我们"自己主动化"实现Mapping.我们无需按传统的ORM思想那样为Domain手动编码Mapping. ORuM对于使用者来说更像ORAM(Object-Relational Auto-Mapping)或者ORIM(Obj