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的知 ...
随机推荐
- 小白日记41:kali渗透测试之Web渗透-SQL手工注入(三)-猜测列名、表名、库名、字段内容,数据库写入
SQL手工注入 靶机:metasploitable(低) 1.当无权读取infomation_schema库[MySQL最重要的源数据库,必须有root权限]/拒绝union.order by语句 ...
- Java中的Scoket编程
网络编程是指编写运行在多个设备(计算机)的程序,这些设备都通过网络连接起来. java.net包中提供了两种常见的网络协议的支持: TCP: TCP是传输控制协议的缩写,它保障了两个应用程序之间的可靠 ...
- [Java] 多个Map的性能比较(TreeMap、HashMap、ConcurrentSkipListMap)
比较Java原生的 3种Map的效率. 1. TreeMap 2. HashMap 3. ConcurrentSkipListMap 结果: 模拟150W以内海量数据的插入和查找,通过增加和查找 ...
- css笔记04:属性选择器
1.属性选择器: 带有 title 属性的所有元素设置样式: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN ...
- android 编写动画
1.在编写动画的时候需要新建一个xml 新建的步骤是选中res单击右键选择Android resource file 然后弹出一个框 ,然后再Resource Type 里面选择Animation 然 ...
- NSBundle介绍及使用
bundle 是一个目录,其中包含了程序会使用到的资源.这些资源包含了如图像,声音,编译好的代码,nib文件(用户也会把bundle称为plug-in).对应bundle, cocoa提供了类NSBu ...
- vs中两张图片的融合
这个其实就是从csdn上面下载的一个例程.感谢这位同学的总结,与源码的有偿分享. 本随笔就是把它通过4个随笔的拆分,实现的. 可以通过: http://blog.csdn.net/masibuaa/a ...
- ‘初始化锁相环INIT_PLL()’
在XS128的SCI学习的过程中,INIT_PLL()显得很重要,初始化锁相环几乎在每个程序中都有,今天看的程序-初始化锁相环的相关代码如下: /*************************** ...
- ASP、JSP、PHP 三种技术比较
目前,最常用的三种动态网页语言有ASP(Active Server Pages),JSP(JavaServer Pages),PHP (Hypertext Preprocessor). 简 介 : A ...
- CXF(2.7.10) - Writing a service with Spring
1. 定义服务接口. package com.huey.demo.ws; import javax.jws.WebParam; import javax.jws.WebService; @WebSer ...