Farseer.net轻量级ORM开源框架 V1.x 入门篇:存储过程实体类映射
上一篇:Farseer.net轻量级ORM开源框架 V1.x 入门篇:视图的数据操作
下一篇:Farseer.net轻量级ORM开源框架 V1.x 入门篇:存储过程数据操作
在V1.0中,新增了存储过程的映射。在以往的版本中,操作存储过程的代码没有这么优雅,必须在每次操作的时候传入存储过程名称、in参数、out参数。
在这个版本之后,存储过程也享受了映射带来的好处:
- 支持定义实体
- 实体中定义in参数、out参数
- 更易于维护(维护仅是针对实体结构)
这是这个版本的一个小创新点。以往我们调用存储过程时,只能在逻辑段里手动写参数名称、存储过程名称。
这给我们带来了维护灾难,同时最重要的是不支持硬编码方式也是很不优雅的。在新版中实现了这一支持。
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。
存储过程实体类:
public class InsertUserVO
{
/// <summary> 用户ID </summary>
[Field(IsOutParam = true)]
public int? ID { get; set; }
/// <summary> 用户名 </summary>
[Field(IsInParam = true)]
public string UserName { get; set; }
/// <summary> 密码 </summary>
[Field(IsInParam = true)]
public string PassWord { get; set; }
}
存储过程与表、视图的区别比较大。在上面代码中,看到使用了IsOutParam和IsInParam的特性。标记后,在执行存储过程时,会根据这些标记生成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开源框架 V1.x 入门篇:视图的数据操作
下一篇:Farseer.net轻量级ORM开源框架 V1.x 入门篇:存储过程数据操作
QQ群:116228666 (Farseer.net开源框架交流) 请注明:Farseer.Net
Farseer.Net是一款ORM框架 + 常用工具 + 扩展集合。
Farseer 寓意:先知、预言家 通常在某些场合时,提供计谋、策略。也希望该框架能给大家提供最大化的便捷。
ORM:其英文全称是:Object(对象) Relational(关系) Mapping(映射)
Farseer.Net的目标是:快速上手、快速开发、简单方便。
Table.Data.User.Where(o=>o.ID == ).ToEntity();
Table.Data.User.Where(o=>o.ID > ).ToList();
Table.Data.User.Where(o=>o.ID != ).Delete();
Table.Data.User.Where(o=>o.ID != ).AddUp(o=>o.LoginCount, );
Table.Data.User.Where(o=>o.ID == ).Update(new User{ UserName = "newName" });
Table.Data.User.Insert(new User{ UserName = "newName" });
Farseer.net轻量级ORM开源框架 V1.x 入门篇:存储过程实体类映射的更多相关文章
- Farseer.net轻量级ORM开源框架 V1.x 入门篇:视图的数据操作
导航 目 录:Farseer.net轻量级ORM开源框架 目录 上一篇:Farseer.net轻量级ORM开源框架 V1.x 入门篇:视图实体类映射 下一篇:Farseer.net轻量级ORM开源 ...
- Farseer.net轻量级ORM开源框架 V1.x 入门篇:存储过程数据操作
导航 目 录:Farseer.net轻量级ORM开源框架 目录 上一篇:Farseer.net轻量级ORM开源框架 V1.x 入门篇:存储过程实体类映射 下一篇:Farseer.net轻量级ORM ...
- Farseer.net轻量级ORM开源框架 V1.x 入门篇:视图实体类映射
导航 目 录:Farseer.net轻量级ORM开源框架 目录 上一篇:Farseer.net轻量级ORM开源框架 V1.x 入门篇:表的数据操作 下一篇:Farseer.net轻量级ORM开源框 ...
- Farseer.net轻量级ORM开源框架 V1.x 入门篇:数据库上下文
导航 目 录:Farseer.net轻量级ORM开源框架 目录 上一篇:Farseer.net轻量级ORM开源框架 V1.x 入门篇:数据库配置文件 下一篇:Farseer.net轻量级ORM开源 ...
- Farseer.net轻量级ORM开源框架 V1.x 入门篇:表的数据操作
导航 目 录:Farseer.net轻量级ORM开源框架 目录 上一篇:Farseer.net轻量级ORM开源框架 V1.x 入门篇:表实体类映射 下一篇:Farseer.net轻量级ORM开源框 ...
- Farseer.net轻量级ORM开源框架 V1.x 入门篇:表实体类映射
导航 目 录:Farseer.net轻量级ORM开源框架 目录 上一篇:Farseer.net轻量级ORM开源框架 V1.x 入门篇:数据库上下文 下一篇:Farseer.net轻量级ORM开源框 ...
- Farseer.net轻量级ORM开源框架 V1.x 入门篇:数据库配置文件
导航 目 录:Farseer.net轻量级ORM开源框架 目录 上一篇:Farseer.net轻量级ORM开源框架 V1.x 入门篇:新版本说明 下一篇:Farseer.net轻量级ORM开源框架 ...
- Farseer.net轻量级ORM开源框架 V1.x 入门篇:新版本说明
导航 目 录:Farseer.net轻量级ORM开源框架 目录 上一篇:没有了 下一篇:Farseer.net轻量级ORM开源框架 V1.x 入门篇:数据库配置 前言 V1.x版本终于到来了.本次 ...
- Farseer.net轻量级ORM开源框架 V1.x 教程目录
本篇教程将以Ver 1.x版本进行详细使用讲解 大家有任何疑问可以加入我们的官方QQ群进行讨论.QQ群:116228666 (Farseer.net开源框架交流) 请注明:Farseer.Net 整个 ...
随机推荐
- 2016/05/19 thinkphp 3.2.2 文件上传
显示效果: 多文件上传. 这里是两个文件一起上传 上传到文件夹的效果: ①aa为调用Home下common文件夹下的function.php 中的rname方法 实现的 ②cc为调用与Home ...
- sql 统计 url字符串处理
SELECT SUBSTRING_INDEX(url,'/',1) AS wed_domain,COUNT(1),SUM(no_open_times),SUM(no_ad_times),SUM(ok_ ...
- JavaScript中面向对象那点事
鉴于自己在JavaScript这方面比較薄弱.所以就找了一本书恶补了一下(被称为犀利书的JavaScript权威指南).书的内容尽管多了点,但这也充分说明了js中的东西还是挺多的.尽管我们的定位不是前 ...
- bzoj1934: [Shoi2007]Vote 善意的投票&&bzoj2768:[JLOI2010]冠军调查
get到新姿势,最小割=最大流,来个大佬的PPT 这道题的做法是将st和1的xpy连,0的xpy和ed连,xpy之间jy连双向边,然后呢答案就是最小割. #include<cstdio> ...
- CF上的3道小题(2)
CF上的3道小题(2) T1:CF630K Indivisibility 题意:给出一个数n,求1到n的数中不能被2到9中任意一个数整除的数. 分析:容斥一下,没了. 代码: #include < ...
- python 操作memercache类库
pip install python-memcached pip install pymemcache pip install python-libmemcached
- Ruby Time类和Date类
Time类 更新: 2017/06/23 更新了Data/Time在model模式下的便利方法 更新: 2018/10/12 修改了%Y相关描述防止误解 年月日时分秒,时区 生成 获取当前时 ...
- django 第一个项目测试
我们安装好Django以后就可以使用Django命令来创建项目了 1.Django 创建第一个项目 安装 Django 之后,您现在应该已经有了可用的管理工具 django-admin.py.我们可以 ...
- Bryce1010的微机接口课设
8086CPU知识回顾 8086 CPU 中寄存器总共为 14 个,且均为 16 位 . 即 AX,BX,CX,DX,SP,BP,SI,DI,IP,FLAG,CS,DS,SS,ES 共 14 个. 而 ...
- 贪心 Codeforces Round #236 (Div. 2) A. Nuts
题目传送门 /* 贪心:每一次选取最多的线段,最大能放置nuts,直到放完为止,很贪婪! 题目读不懂多读几遍:) */ #include <cstdio> #include <alg ...