zoukankan      html  css  js  c++  java
  • Farseer.net轻量级ORM开源框架 V1.x 入门篇:存储过程实体类映射

    导航

    目   录:Farseer.net轻量级ORM开源框架 目录

    上一篇:Farseer.net轻量级ORM开源框架 V1.x 入门篇:视图的数据操作

    下一篇:Farseer.net轻量级ORM开源框架 V1.x 入门篇:存储过程数据操作

    前言

      在V1.0中,新增了存储过程的映射。在以往的版本中,操作存储过程的代码没有这么优雅,必须在每次操作的时候传入存储过程名称、in参数、out参数。

      在这个版本之后,存储过程也享受了映射带来的好处:

    1.   支持定义实体
    2.   实体中定义in参数、out参数
    3.   更易于维护(维护仅是针对实体结构)

      这是这个版本的一个小创新点。以往我们调用存储过程时,只能在逻辑段里手动写参数名称、存储过程名称。

      这给我们带来了维护灾难,同时最重要的是不支持硬编码方式也是很不优雅的。在新版中实现了这一支持。

    存储过程上下文
        public class Proc : DbContext<Proc>
        {
            [Set(Name = "sp_Info_User")]
            public ProcSet<InfoUserVO> InfoUser { get; set; }
    
            [Set(Name = "sp_Insert_User")]
            public ProcSet<InsertUserVO> InsertUser { get; set; }
    
            [Set(Name = "sp_List_User")]
            public ProcSet<ListUserVO> ListUser { get; set; }
    
            [Set(Name = "sp_Value_User")]
            public ProcSet<ValueUserVO> ValueUser { get; set; }
        }

      它的各个存储过程由ProcSet封装。针对数据库表提供的一系列执行的操作。被ProcSet包含的就是存储过程字段了。这里有点特殊的是,除了是查询的结果集的映射外,包含了参数传入的映射,并且区分in/out

    VO实体类

    存储过程实体类:

     1 public class InsertUserVO 
     2 {
     3     /// <summary> 用户ID </summary>
     4     [Field(IsOutParam = true)]
     5     public int? ID { get; set; }
     6     /// <summary> 用户名 </summary>
     7     [Field(IsInParam = true)]
     8     public string UserName { get; set; }
     9     /// <summary> 密码 </summary>
    10     [Field(IsInParam = true)]
    11     public string PassWord { get; set; }
    12 }

      存储过程与表、视图的区别比较大。在上面代码中,看到使用了IsOutParamIsInParam的特性。标记后,在执行存储过程时,会根据这些标记生成SQL参数化。传入到存储过程中。

      与此同时,如果该条存储过程执行后,会返回数据列表时,也会对应的返回当前这个实体列表。就根据我们对表进行查询时一样。

      通过存储过程的映射,我们不需要每次调用时手动指定他们了。让我们存储过程也能ORM了。

    存储过程特性

       只有一个:FieldAttribute,它与表的特性是共同的。只不过它多了一些针对存储过程而设计的:

      我们先来看下面的表格:

    序号 变量 注释 类型 适用范围 说明
    1 Name 数据库字段名称 string 全部

    指定表字段、视图字段名称、存储过程参数的名称、数据库函数

    未显示指定时,默认使用当前的类属性名称作为缺省名称

    2 IsOutParam 指示字段是否为存储过程中输出的参数 bool 存储过程

     默认:false

    设为:true 将作为SQL参数值传入,并配合Name声明参数名称,与InParam区别是Out在数据库存储过程中也要声明为该变量是out 即在存储过程中改变时,会将值返回来

    3 IsInParam 指示字段是否为存储过程中输入的参数 bool 存储过程  

     默认:false

    设为:true 将作为SQL参数值传入,并配合Name声明参数名称

       只是多了第2、3条属性说明(与TableSet、ViewSet的特性:FieldAttribute,是同一个)。

      通过设置它们,很容易让Farseer.Net哪些是参数及输入输出。

    总结

      存储过程的映射非常简单,当然它的操作也是非常简单,在下一篇我们可以学习到它提供的4种方法用来操作。

      这篇就结束在这,总结,其实没什么好总结的了。

    导航

    目   录:Farseer.net轻量级ORM开源框架 目录

    上一篇:Farseer.net轻量级ORM开源框架 V1.x 入门篇:视图的数据操作

    下一篇:Farseer.net轻量级ORM开源框架 V1.x 入门篇:存储过程数据操作

    广告时间

    QQ群:116228666 (Farseer.net开源框架交流) 请注明:Farseer.Net

    Farseer.Net是一款ORM框架 + 常用工具 + 扩展集合。

    Farseer 寓意:先知、预言家 通常在某些场合时,提供计谋、策略。也希望该框架能给大家提供最大化的便捷。

    ORM:其英文全称是:Object(对象) Relational(关系) Mapping(映射)

    Farseer.Net的目标是:快速上手、快速开发、简单方便。

    1 Table.Data.User.Where(o=>o.ID == 1).ToEntity();
    2 Table.Data.User.Where(o=>o.ID > 1).ToList();
    3 Table.Data.User.Where(o=>o.ID != 0).Delete();
    4 Table.Data.User.Where(o=>o.ID != 0).AddUp(o=>o.LoginCount, 1);
    5 Table.Data.User.Where(o=>o.ID == 1).Update(new User{ UserName = "newName" });
    6 Table.Data.User.Insert(new User{ UserName = "newName" });
  • 相关阅读:
    面试必备的数据库悲观锁与乐观锁
    5分钟带你读懂事务隔离性与隔离级别
    带你了解数据库中事务的ACID特性
    带你了解数据库中group by的用法
    带你了解数据库中JOIN的用法
    一篇带你读懂TCP之“滑动窗口”协议
    通过“表白”的方式,让我们快速了解网络协议
    聊一聊Iterable与Iterator的那些事!
    一篇让你明白进程与线程之间的区别与联系
    MySQL 索引的增删查
  • 原文地址:https://www.cnblogs.com/steden/p/4555269.html
Copyright © 2011-2022 走看看