Dapper.ColumnMapper 的使用
using System;
using System.Collections.Generic;
using System.Data;
using System.Data.SqlClient;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using NUnit.Framework;
using FluentAssertions; namespace Dapper.ColumnMapper.Tests
{
[TestFixture]
public class ColumnMapperTests
{
private SqlConnection connection; public static readonly string connectionString = "Data Source=.\\SQLEXPRESS;Initial Catalog=tempdb;Integrated Security=True"; public class ColumnMappingObject
{
public string DefaultColumn { get; set; }
public string NonMatchingColumn { get; set; }
[ColumnMapping("MappedCol")]
public string MappedColumn { get; set; }
public string MiscasedColumn { get; set; }
} [TestFixtureSetUp]
public void Setup()
{
connection = new SqlConnection(connectionString);
connection.Open(); CreateTestTable(); SqlMapper.SetTypeMap(typeof(ColumnMappingObject), new ColumnTypeMapper(typeof(ColumnMappingObject)));
} private void CreateTestTable()
{
const string createSql = @"
create table #Test (Id int, DefaultColumn varchar(20), BadCol varchar(20), MappedCol varchar(20), miscasedColumn varchar(20))
insert #Test values(1, 'DefaultColumn1', 'BadColumn', 'MappedColumn1', 'MiscasedColumn1')"; connection.Execute(createSql);
} [TestFixtureTearDown]
public void TearDown()
{
if (connection != null && connection.State == ConnectionState.Open)
{
const string dropSql = "drop table #Test";
connection.Execute(dropSql); connection.Close();
} connection = null;
} [Test]
public void Property_Matching_Column_Name_Exactly_Is_Mapped_Correctly()
{
var selectedObject = SelectObjects(); selectedObject.Should().NotBeNull();
selectedObject.DefaultColumn.Should().NotBeNullOrEmpty();
selectedObject.DefaultColumn.Should().Be("DefaultColumn1");
} [Test]
public void Property_Not_Matching_Coumn_Name_Exactly_And_No_Attribute_Is_Not_Mapped()
{
var selectedObject = SelectObjects(); selectedObject.Should().NotBeNull();
selectedObject.NonMatchingColumn.Should().BeNullOrEmpty();
} [Test]
public void Property_Using_Column_Mapping_Attribute_Is_Mapped_Correctly()
{
var selectedObject = SelectObjects(); selectedObject.Should().NotBeNull();
selectedObject.MappedColumn.Should().NotBeNullOrEmpty();
selectedObject.MappedColumn.Should().Be("MappedColumn1");
} [Test]
public void Miscased_Property_Is_Mapped_Correctly()
{
var selectedObject = SelectObjects(); selectedObject.Should().NotBeNull();
selectedObject.MiscasedColumn.Should().NotBeNullOrEmpty();
selectedObject.MiscasedColumn.Should().Be("MiscasedColumn1"); } private ColumnMappingObject SelectObjects()
{
const string selectSql = "select * from #Test"; return connection.Query<ColumnMappingObject>(selectSql).FirstOrDefault();
} [Test]
public void Can_Register_Single_Type()
{
ColumnTypeMapper.RegisterForTypes(typeof (DateTime)); var map = SqlMapper.GetTypeMap(typeof(DateTime)); map.Should().NotBeNull();
map.Should().BeOfType<ColumnTypeMapper>();
} [Test]
public void Can_Register_Multiple_Types()
{
ColumnTypeMapper.RegisterForTypes(typeof(DateTime), typeof(TimeSpan)); var dateTimeMap = SqlMapper.GetTypeMap(typeof (DateTime)); dateTimeMap.Should().NotBeNull();
dateTimeMap.Should().BeOfType<ColumnTypeMapper>(); var timeSpanMap = SqlMapper.GetTypeMap(typeof (TimeSpan)); timeSpanMap.Should().NotBeNull();
timeSpanMap.Should().BeOfType<ColumnTypeMapper>();
} }
}
Dapper.ColumnMapper 的使用的更多相关文章
- trade 1.0 开源工具
dapper.net T4PocoGenerator/ Dapper.ColumnMapper 参考链接: http://blog.csdn.net/ymnets/article/details/85 ...
- Dapper逆天入门~强类型,动态类型,多映射,多返回值,增删改查+存储过程+事物案例演示
Dapper的牛逼就不扯蛋了,答应群友做个入门Demo的,现有园友需要,那么公开分享一下: 完整Demo:http://pan.baidu.com/s/1i3TcEzj 注 意 事 项:http:// ...
- Dapper扩展之~~~Dapper.Contrib
平台之大势何人能挡? 带着你的Net飞奔吧!http://www.cnblogs.com/dunitian/p/4822808.html#skill 上一篇文章:Dapper逆天入门~强类型,动态类型 ...
- 由Dapper QueryMultiple 返回数据的问题得出==》Dapper QueryMultiple并不会帮我们识别多个返回值的顺序
异常汇总:http://www.cnblogs.com/dunitian/p/4523006.html#dapper 今天帮群友整理Dapper基础教程的时候手脚快了点,然后遇到了一个小问题,Dapp ...
- Dapper.Contrib:GetAsync<T> only supports an entity with a [Key] or an [ExplicitKey] property
异常处理:http://www.cnblogs.com/dunitian/p/4523006.html#dapper 原来Model是这样滴 修改后是这样滴 注意点:Model里面的Table和Key ...
- Dapper where Id in的解决方案
简单记一下,一会出去有点事情~ 我们一般写sql都是==>update NoteInfo set NDataStatus=@NDataStatus where NId in (@NIds) Da ...
- ASP.NET Core 1.0 使用 Dapper 操作 MySql(包含事务)
操作 MySql 数据库使用MySql.Data程序包(MySql 开发,其他第三方可能会有些问题). project.json 代码: { "version": "1. ...
- Asp.Net Core + Dapper + Repository 模式 + TDD 学习笔记
0x00 前言 之前一直使用的是 EF ,做了一个简单的小项目后发现 EF 的表现并不是很好,就比如联表查询,因为现在的 EF Core 也没有啥好用的分析工具,所以也不知道该怎么写 Linq 生成出 ...
- 搭建一套自己实用的.net架构(3)续 【ORM Dapper+DapperExtensions+Lambda】
前言 继之前发的帖子[ORM-Dapper+DapperExtensions],对Dapper的扩展代码也进行了改进,同时加入Dapper 对Lambda表达式的支持. 由于之前缺乏对Lambda的知 ...
随机推荐
- memcached linux / win32 1.4.13
memcached-win32-1.4.13 点击下载 http://pan.baidu.com/s/1kTMABaf memcached -d install (安装为windows service ...
- oracle pl/sql简介、块、过程
pl/sql语言是oracle在sql上扩展的语言.1 过程.函数.触发器是在pl/sql编写2 过程.函数.触发器是在oracle中3 pl/sql的语句可以在java中直接调用 简单介绍 在sql ...
- 基本Linux命令总结
常用基本Linux命令总结 学习linux/unix之初,你可能会被上百条的各种命令搞的头昏脑涨,虽然可用的命令有很多,但是日常使用的不过那么几条,如果仅仅是DBA角色而非系统管理员,那么就来一起学习 ...
- ORACLE时间函数(SYSDATE)深入理解
ORACLE时间函数(SYSDATE)深入理解 加法 select sysdate,add_months(sysdate,12) from dual; --加1年 select sysdate,add ...
- 转:java 类名 this 的使用
转自: http://www.cnblogs.com/PengLee/p/3993033.html 类名.class与类名.this详解 类名.class 我们知道在java中,一个类在 ...
- c#语法笔记
书写代码需要注意的地方: 1.代码中出现的所有标点都是英文半角 shift键快速切换中文半角和英文半角 shift+空格 切换全角/半角 2.在c#代码中,每行代码的结束,我们都以分号结束,注意:这个 ...
- 【转载】Kafka High Availability
http://www.haokoo.com/internet/2877400.html Kafka在0.8以前的版本中,并不提供High Availablity机制,一旦一个或多个Broker宕机,则 ...
- linux(ubuntu)和windows下面快速搭建android开发环境
在windows和linux下面搭建android开发环境,一般要安装以下几个软件: 1.JDK安装 2.Eclipse安装 3.Android SDK安装 4.在eclipse里面安装ADT 5.e ...
- Repeater内RadioButton.GroupName失效
最近在做项目时遇到要在repeater中显示多个radiobutton并且实现单选功能,于是很自然地就加上了GroupName,但事实是不行的,在repeater中的radiobutton呈现到页面的 ...
- 图像热点&图像映射
图像映射 图像映射也称为图像热点. 作用: 让同一张图片上的不同区域,可以实现多个不同的超链接功能. 图示: <map>图像映射三步走: 图像映射的实现需要三方面配合完成: 1.图像映射容 ...