Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
int
Dapper
提交
88e012d5
D
Dapper
项目概览
int
/
Dapper
11 个月 前同步成功
通知
2
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
D
Dapper
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
88e012d5
编写于
6月 06, 2011
作者:
S
Sam Saffron
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
addparameter was the wrong name, this sets up multiple
added test for TVP
上级
3a75ef10
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
67 addition
and
3 deletion
+67
-3
Dapper/SqlMapper.cs
Dapper/SqlMapper.cs
+3
-3
Tests/Tests.cs
Tests/Tests.cs
+64
-0
未找到文件。
Dapper/SqlMapper.cs
浏览文件 @
88e012d5
...
...
@@ -22,7 +22,7 @@ public static partial class SqlMapper
{
public
interface
IDynamicParameters
{
void
AddParameter
(
IDbCommand
command
);
void
AddParameter
s
(
IDbCommand
command
);
}
static
Link
<
Type
,
Action
<
IDbCommand
,
bool
>>
bindByNameCache
;
static
Action
<
IDbCommand
,
bool
>
GetBindByName
(
Type
commandType
)
...
...
@@ -617,7 +617,7 @@ private static CacheInfo GetCacheInfo(Identity identity)
{
if
(
typeof
(
IDynamicParameters
).
IsAssignableFrom
(
identity
.
parametersType
))
{
info
.
ParamReader
=
(
cmd
,
obj
)
=>
{
(
obj
as
IDynamicParameters
).
AddParameter
(
cmd
);
};
info
.
ParamReader
=
(
cmd
,
obj
)
=>
{
(
obj
as
IDynamicParameters
).
AddParameter
s
(
cmd
);
};
}
else
{
...
...
@@ -1379,7 +1379,7 @@ public DynamicParameters(object template)
}
void
SqlMapper
.
IDynamicParameters
.
AddParameter
(
IDbCommand
command
)
void
SqlMapper
.
IDynamicParameters
.
AddParameter
s
(
IDbCommand
command
)
{
foreach
(
var
param
in
parameters
.
Values
)
{
...
...
Tests/Tests.cs
浏览文件 @
88e012d5
...
...
@@ -707,6 +707,70 @@ public void TestDapperSetsPrivates()
{
connection
.
Query
<
PrivateDan
>(
"select 'one' ShadowInDB"
).
First
().
Shadow
.
IsEqualTo
(
1
);
}
class
IntDynamicParam
:
Dapper
.
SqlMapper
.
IDynamicParameters
{
IEnumerable
<
int
>
numbers
;
public
IntDynamicParam
(
IEnumerable
<
int
>
numbers
)
{
this
.
numbers
=
numbers
;
}
public
void
AddParameters
(
IDbCommand
command
)
{
var
sqlCommand
=
(
SqlCommand
)
command
;
sqlCommand
.
CommandType
=
CommandType
.
StoredProcedure
;
List
<
Microsoft
.
SqlServer
.
Server
.
SqlDataRecord
>
number_list
=
new
List
<
Microsoft
.
SqlServer
.
Server
.
SqlDataRecord
>();
// Create an SqlMetaData object that describes our table type.
Microsoft
.
SqlServer
.
Server
.
SqlMetaData
[]
tvp_definition
=
{
new
Microsoft
.
SqlServer
.
Server
.
SqlMetaData
(
"n"
,
SqlDbType
.
Int
)
};
foreach
(
int
n
in
numbers
)
{
// Create a new record, using the metadata array above.
Microsoft
.
SqlServer
.
Server
.
SqlDataRecord
rec
=
new
Microsoft
.
SqlServer
.
Server
.
SqlDataRecord
(
tvp_definition
);
rec
.
SetInt32
(
0
,
n
);
// Set the value.
number_list
.
Add
(
rec
);
// Add it to the list.
}
// Add the table parameter.
var
p
=
sqlCommand
.
Parameters
.
Add
(
"@ints"
,
SqlDbType
.
Structured
);
p
.
Direction
=
ParameterDirection
.
Input
;
p
.
TypeName
=
"int_list_type"
;
p
.
Value
=
number_list
;
}
}
// SQL Server specific test to demonstrate TVP
public
void
TestTVP
()
{
try
{
connection
.
Execute
(
"CREATE TYPE int_list_type AS TABLE (n int NOT NULL PRIMARY KEY)"
);
connection
.
Execute
(
"CREATE PROC get_ints @ints int_list_type READONLY AS select * from @ints"
);
var
nums
=
connection
.
Query
<
int
>(
"get_ints"
,
new
IntDynamicParam
(
new
int
[]
{
1
,
2
,
3
})).
ToList
();
nums
[
0
].
IsEqualTo
(
1
);
nums
[
1
].
IsEqualTo
(
2
);
nums
[
2
].
IsEqualTo
(
3
);
nums
.
Count
.
IsEqualTo
(
3
);
}
finally
{
try
{
connection
.
Execute
(
"DROP PROC get_ints"
);
}
finally
{
connection
.
Execute
(
"DROP TYPE int_list_type"
);
}
}
}
/* TODO:
*
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录