zoukankan      html  css  js  c++  java
  • FluentNhibernate 不支持存储过程

     一直以为没有使用FN进行存储过程的操作,这次因为后台首页想统计下数据,就利用了存储过程,但在使用中却发现FN目前还不支持存储过程(点击查看官方),没有办法,只能利用Fluent Configuration和HBM Configuration混合的映射方式。

    这里要注意的是:

    a)存储过程返回的数据,最好重新定义一个class,并且进行映射(可以使用FN或者HDM方式)

    b)把新定义的class和映射的hbm文件,放到你的Model层,这是为了方便以后的管理。

    c)映射存储过程的hdm文件名,以返回类型的名称命名。(如果返回的class命名为:DataResult,hbm的文件名为:DataResult.hbm.xml)

    class:

     public class TravelDefaultData
        {
            public virtual int UserCount { get; set; }
    
            public virtual int OrderCount { get; set; }
    
            public virtual int LineCount { get; set; }
    
            public virtual int CrusiseCount { get; set; }
        }

    hbm:

    <?xml version="1.0" encoding="utf-8" ?>
    <hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" assembly="Travel.Domain" namespace="Bus.Travel"> 
      <sql-query name="GetTravelData">
        <return class="TravelDefaultData">
          <return-property column="usercount" name="UserCount" />
          <return-property column="ordercount" name="OrderCount" />
          <return-property column="linecount" name="LinCrusiseCount" />
        </return> EXEC [GetTravelData] :userStartDate, :orderStartDate, :lineStartDate, :crusiesStartDate </sql-query>
    </hibernate-mapping>

    TravelDefaultData的映射,可以参考这里

    最后记得配置下混合映射:

    var db = Fluently.Configure()
                    .Database(GetSqlConfig())
                    .Mappings(a =>
                    {
                        a.FluentMappings.AddFromAssemblyOf<AreaMap>();
                        a.HbmMappings.AddClasses(typeof(TravelDefaultData));
                    });
                return db.BuildSessionFactory();

    配置以后就能按照NHibernate的方式进行使用了。

  • 相关阅读:
    vue学习之五生命周期
    vue学习之四组件系统
    vue学习之三常用命令
    vue学习之二ECMAScript6标准
    vue学习之一vue初识
    (转)nginx负载均衡(5种方式)、rewrite重写规则及多server反代配置梳理
    python技巧总结之set、日志、rsa加密
    (转)二十三种设计模式及其python实现
    Python之traceback错误堆栈信息处理
    python虚拟环境--virtualenv
  • 原文地址:https://www.cnblogs.com/aaa6818162/p/4146994.html
Copyright © 2011-2022 走看看