马特,
这可以很容易地完成。我做了这个改变来清理 SQL 字符空间。我已经对其进行了测试,如果由于更改而变慢,我的代码没有任何迹象。
首先确保备份现有的源代码,以便在需要时更容易恢复。
接下来创建以下方法:
public static string ReadString(object value) /*** CUSTOM CODE ***/
{
if (value == null || value is DBNull) return null;
return value.ToString().Trim();
}
我总是用 / * CUSTOM CODE * / 标记我的所有代码更改,以便以后可以轻松找到我的更改
接下来找到以下方法:
public static void SetTypeMap(Type type, ITypeMap map)
现在在该方法中找到以下行:
if (memberType == typeof (char) || memberType == typeof (char?))
{
il.EmitCall(OpCodes.Call, typeof (SqlMapper).GetMethod(
memberType == typeof (char) ? "ReadChar" : "ReadNullableChar",
BindingFlags.Static | BindingFlags.Public), null);
// stack is now [target][target][typed-value]
}
else
并修改如下:
if (memberType == typeof (char) || memberType == typeof (char?))
{
il.EmitCall(OpCodes.Call, typeof (SqlMapper).GetMethod(
memberType == typeof (char) ? "ReadChar" : "ReadNullableChar",
BindingFlags.Static | BindingFlags.Public), null);
// stack is now [target][target][typed-value]
}
else if (memberType == typeof(string)) /*** CUSTOM CODE START ***/
{
il.EmitCall(OpCodes.Call, typeof(SqlMapper).GetMethod("ReadString", BindingFlags.Static | BindingFlags.Public), null);
// stack is now [target][target][typed-value]
} /*** CUSTOM CODE END ***/
else
编译,你准备好了