Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
D
Dapper
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
tsai
Dapper
Commits
19a5975a
Commit
19a5975a
authored
Apr 04, 2011
by
Sam Saffron
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
remove some of the dependency on SqlConnection and so on
parent
4aef740a
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
15 additions
and
13 deletions
+15
-13
SqlMapper.cs
SqlMapper.cs
+15
-13
No files found.
SqlMapper.cs
View file @
19a5975a
...
@@ -108,13 +108,13 @@ public bool Equals(Identity other)
...
@@ -108,13 +108,13 @@ public bool Equals(Identity other)
static
Dictionary
<
Type
,
SqlDbType
>
typeMap
;
static
Dictionary
<
Type
,
SqlDbType
>
typeMap
;
public
static
List
<
dynamic
>
ExecuteMapperQuery
(
this
Sql
Connection
cnn
,
string
sql
,
object
param
=
null
,
SqlTransaction
transaction
=
null
)
public
static
List
<
dynamic
>
ExecuteMapperQuery
(
this
IDb
Connection
cnn
,
string
sql
,
object
param
=
null
,
SqlTransaction
transaction
=
null
)
{
{
// TODO: get rid of casting hackery
// TODO: get rid of casting hackery
return
ExecuteMapperQuery
<
ExpandoObject
>(
cnn
,
sql
,
param
,
transaction
).
Select
(
s
=>
s
as
dynamic
).
ToList
();
return
ExecuteMapperQuery
<
ExpandoObject
>(
cnn
,
sql
,
param
,
transaction
).
Select
(
s
=>
s
as
dynamic
).
ToList
();
}
}
public
static
List
<
T
>
ExecuteMapperQuery
<
T
>(
this
Sql
Connection
cnn
,
string
sql
,
object
param
=
null
,
SqlTransaction
transaction
=
null
)
public
static
List
<
T
>
ExecuteMapperQuery
<
T
>(
this
IDb
Connection
cnn
,
string
sql
,
object
param
=
null
,
SqlTransaction
transaction
=
null
)
{
{
var
identity
=
new
Identity
(
sql
,
typeof
(
T
));
var
identity
=
new
Identity
(
sql
,
typeof
(
T
));
var
rval
=
new
List
<
T
>();
var
rval
=
new
List
<
T
>();
...
@@ -154,7 +154,7 @@ public static List<T> ExecuteMapperQuery<T>(this SqlConnection cnn, string sql,
...
@@ -154,7 +154,7 @@ public static List<T> ExecuteMapperQuery<T>(this SqlConnection cnn, string sql,
cachedSerializers
[
identity
]
=
oDeserializer
;
cachedSerializers
[
identity
]
=
oDeserializer
;
}
}
Func
<
SqlDataReader
,
T
>
deserializer
=
(
Func
<
Sql
DataReader
,
T
>)
oDeserializer
;
Func
<
IDataReader
,
T
>
deserializer
=
(
Func
<
I
DataReader
,
T
>)
oDeserializer
;
while
(
reader
.
Read
())
while
(
reader
.
Read
())
{
{
rval
.
Add
(
deserializer
(
reader
));
rval
.
Add
(
deserializer
(
reader
));
...
@@ -166,7 +166,7 @@ public static List<T> ExecuteMapperQuery<T>(this SqlConnection cnn, string sql,
...
@@ -166,7 +166,7 @@ public static List<T> ExecuteMapperQuery<T>(this SqlConnection cnn, string sql,
return
rval
;
return
rval
;
}
}
private
static
object
GetDynamicDeserializer
(
Sql
DataReader
reader
)
private
static
object
GetDynamicDeserializer
(
I
DataReader
reader
)
{
{
List
<
string
>
colNames
=
new
List
<
string
>();
List
<
string
>
colNames
=
new
List
<
string
>();
for
(
int
i
=
0
;
i
<
reader
.
FieldCount
;
i
++)
for
(
int
i
=
0
;
i
<
reader
.
FieldCount
;
i
++)
...
@@ -174,7 +174,7 @@ private static object GetDynamicDeserializer(SqlDataReader reader)
...
@@ -174,7 +174,7 @@ private static object GetDynamicDeserializer(SqlDataReader reader)
colNames
.
Add
(
reader
.
GetName
(
i
));
colNames
.
Add
(
reader
.
GetName
(
i
));
}
}
Func
<
Sql
DataReader
,
ExpandoObject
>
rval
=
Func
<
I
DataReader
,
ExpandoObject
>
rval
=
r
=>
r
=>
{
{
IDictionary
<
string
,
object
>
row
=
new
ExpandoObject
();
IDictionary
<
string
,
object
>
row
=
new
ExpandoObject
();
...
@@ -228,7 +228,7 @@ private static object GetDynamicDeserializer(SqlDataReader reader)
...
@@ -228,7 +228,7 @@ private static object GetDynamicDeserializer(SqlDataReader reader)
}
}
private
static
SqlDataReader
GetReader
<
T
>(
Sql
Connection
cnn
,
SqlTransaction
tranaction
,
string
sql
,
List
<
ParamInfo
>
paramInfo
)
private
static
IDataReader
GetReader
<
T
>(
IDb
Connection
cnn
,
SqlTransaction
tranaction
,
string
sql
,
List
<
ParamInfo
>
paramInfo
)
{
{
using
(
var
cmd
=
cnn
.
CreateCommand
())
using
(
var
cmd
=
cnn
.
CreateCommand
())
{
{
...
@@ -238,7 +238,9 @@ private static SqlDataReader GetReader<T>(SqlConnection cnn, SqlTransaction tran
...
@@ -238,7 +238,9 @@ private static SqlDataReader GetReader<T>(SqlConnection cnn, SqlTransaction tran
{
{
foreach
(
var
info
in
paramInfo
)
foreach
(
var
info
in
paramInfo
)
{
{
var
param
=
cmd
.
Parameters
.
Add
(
"@"
+
info
.
Name
,
info
.
Type
);
var
param
=
new
SqlParameter
(
"@"
+
info
.
Name
,
info
.
Type
);
cmd
.
Parameters
.
Add
(
param
);
param
.
Value
=
info
.
Val
??
DBNull
.
Value
;
param
.
Value
=
info
.
Val
??
DBNull
.
Value
;
param
.
Direction
=
ParameterDirection
.
Input
;
param
.
Direction
=
ParameterDirection
.
Input
;
if
(
info
.
Type
==
SqlDbType
.
NVarChar
)
if
(
info
.
Type
==
SqlDbType
.
NVarChar
)
...
@@ -293,16 +295,16 @@ private static SqlDataReader GetReader<T>(SqlConnection cnn, SqlTransaction tran
...
@@ -293,16 +295,16 @@ private static SqlDataReader GetReader<T>(SqlConnection cnn, SqlTransaction tran
}
}
private
static
object
GetStructDeserializer
<
T
>(
Sql
DataReader
reader
)
private
static
object
GetStructDeserializer
<
T
>(
I
DataReader
reader
)
{
{
Func
<
Sql
DataReader
,
T
>
deserializer
=
null
;
Func
<
I
DataReader
,
T
>
deserializer
=
null
;
deserializer
=
r
=>
(
T
)
r
.
GetValue
(
0
);
deserializer
=
r
=>
(
T
)
r
.
GetValue
(
0
);
return
deserializer
;
return
deserializer
;
}
}
public
static
Func
<
SqlDataReader
,
T
>
GetClassDeserializer
<
T
>(
Sql
DataReader
reader
)
public
static
Func
<
IDataReader
,
T
>
GetClassDeserializer
<
T
>(
I
DataReader
reader
)
{
{
DynamicMethod
dm
=
new
DynamicMethod
(
"Deserialize"
+
Guid
.
NewGuid
().
ToString
(),
typeof
(
T
),
new
Type
[]
{
typeof
(
Sql
DataReader
)
},
true
);
DynamicMethod
dm
=
new
DynamicMethod
(
"Deserialize"
+
Guid
.
NewGuid
().
ToString
(),
typeof
(
T
),
new
Type
[]
{
typeof
(
I
DataReader
)
},
true
);
var
il
=
dm
.
GetILGenerator
();
var
il
=
dm
.
GetILGenerator
();
...
@@ -324,7 +326,7 @@ private static object GetStructDeserializer<T>(SqlDataReader reader)
...
@@ -324,7 +326,7 @@ private static object GetStructDeserializer<T>(SqlDataReader reader)
).
ToList
();
).
ToList
();
var
getItem
=
typeof
(
SqlDataReader
).
GetProperties
(
BindingFlags
.
Instance
|
BindingFlags
.
Public
)
var
getItem
=
typeof
(
IDataRecord
).
GetProperties
(
BindingFlags
.
Instance
|
BindingFlags
.
Public
)
.
Where
(
p
=>
p
.
GetIndexParameters
().
Any
()
&&
p
.
GetIndexParameters
()[
0
].
ParameterType
==
typeof
(
int
))
.
Where
(
p
=>
p
.
GetIndexParameters
().
Any
()
&&
p
.
GetIndexParameters
()[
0
].
ParameterType
==
typeof
(
int
))
.
Select
(
p
=>
p
.
GetGetMethod
()).
First
();
.
Select
(
p
=>
p
.
GetGetMethod
()).
First
();
...
@@ -363,7 +365,7 @@ private static object GetStructDeserializer<T>(SqlDataReader reader)
...
@@ -363,7 +365,7 @@ private static object GetStructDeserializer<T>(SqlDataReader reader)
}
}
il
.
Emit
(
OpCodes
.
Ret
);
// stack is empty
il
.
Emit
(
OpCodes
.
Ret
);
// stack is empty
return
(
Func
<
SqlDataReader
,
T
>)
dm
.
CreateDelegate
(
typeof
(
Func
<
Sql
DataReader
,
T
>));
return
(
Func
<
IDataReader
,
T
>)
dm
.
CreateDelegate
(
typeof
(
Func
<
I
DataReader
,
T
>));
}
}
private
static
void
EmitInt32
(
ILGenerator
il
,
int
value
)
private
static
void
EmitInt32
(
ILGenerator
il
,
int
value
)
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment