Commit 66c8b3f1 authored by Marc Gravell's avatar Marc Gravell

Mono lacks SqlParameter.TypeName; apply that more flexibly

parent a8043e02
...@@ -4002,6 +4002,16 @@ public TableValuedParameter(DataTable table, string typeName) ...@@ -4002,6 +4002,16 @@ public TableValuedParameter(DataTable table, string typeName)
this.table = table; this.table = table;
this.typeName = typeName; this.typeName = typeName;
} }
static readonly Action<System.Data.SqlClient.SqlParameter, string> setTypeName;
static TableValuedParameter()
{
var prop = typeof(System.Data.SqlClient.SqlParameter).GetProperty("TypeName", BindingFlags.Instance | BindingFlags.Public);
if(prop != null && prop.PropertyType == typeof(string) && prop.CanWrite)
{
setTypeName = (Action<System.Data.SqlClient.SqlParameter, string>)
Delegate.CreateDelegate(typeof(Action<System.Data.SqlClient.SqlParameter, string>), prop.GetSetMethod());
}
}
void SqlMapper.ICustomQueryParameter.AddParameter(IDbCommand command, string name) void SqlMapper.ICustomQueryParameter.AddParameter(IDbCommand command, string name)
{ {
var param = command.CreateParameter(); var param = command.CreateParameter();
...@@ -4012,7 +4022,7 @@ void SqlMapper.ICustomQueryParameter.AddParameter(IDbCommand command, string nam ...@@ -4012,7 +4022,7 @@ void SqlMapper.ICustomQueryParameter.AddParameter(IDbCommand command, string nam
var sqlParam = param as System.Data.SqlClient.SqlParameter; var sqlParam = param as System.Data.SqlClient.SqlParameter;
if (sqlParam != null) if (sqlParam != null)
{ {
sqlParam.TypeName = typeName; if (setTypeName != null) setTypeName(sqlParam, typeName);
sqlParam.SqlDbType = SqlDbType.Structured; sqlParam.SqlDbType = SqlDbType.Structured;
} }
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment