nHibernate Mapping By Code - Introduction

介绍了nHibernate 3.2中的Mapping by Code特性,包括如何配置SessionFactory以自动扫描映射类,以及如何为实体类编写继承ClassMapping的映射类。此特性简化了对遗留数据库的支持并便于重构。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

nHibernate 3.2新增了一种mapping by code的映射策略,很有意思。你可以自定义约定,并且按照约定定制自动映射策略,面对遗留数据库时这个功能往往很有用,另外,由于mapping by code是基于代码的(而不是xml文件),对domain object进行重命名的重构操作会非常方便,不用跑到xml映射文件查找字符串了。

要使用Mapping by Code很简单,

第一步,配置SessionFactory,使nhibernate自动扫描项目中所有继承ClassMapping的类,并将其解释为映射

public class NHibernateHelper
{
    private static ISessionFactory _sessionFactory;

    public static ISessionFactory SessionFactory
    {
        get
        {
            if (_sessionFactory == null)
            {
                var configuration = new Configuration();
                configuration.Configure();

                var mappers = new ModelMapper();
                mappers.AddMappings(Assembly.GetExecutingAssembly().GetExportedTypes());

                var hbmMapping = mappers.CompileMappingForAllExplicitlyAddedEntities();
                Console.WriteLine(hbmMapping.AsString());

                configuration.AddDeserializedMapping(hbmMapping, "");

                _sessionFactory = configuration.BuildSessionFactory();
            }
            return _sessionFactory;
        }
    }

    public static ISession OpenSession()
    {
        return SessionFactory.OpenSession();
    }
}

 

第二步,为每个实体类编写映射类,映射类只需继承ClassMapping就可以被nhibernate识别。

关于如何编写映射类,参考以下文章:

nHibernate Mapping By Code - One to One

nHibernate Mapping By Code - One to Many and Many to One

nHibernate Mapping By Code - Many to Many

参考文章:

NH Mapping by code VS the Untouchable DB

Using NH3.2 mapping by code for Automatic Mapping

NHibernate剖析:Mapping篇之Mapping-By-Code(2):运用ModelMapper


转载请注明出处

示例代码基于nHibernate3.3.1

转载于:https://www.cnblogs.com/iamzhenyu/archive/2012/07/01/2572216.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值