我希望重构这个方法(来自Massive.cs by Rob Conery):
public static void AddParam(this DbCommand cmd, object item) {
var p = cmd.CreateParameter();
p.ParameterName = string.Format("@{0}", cmd.Parameters.Count);
if (item == null) {
p.Value = DBNull.Value;
} else {
if (item.GetType() == typeof(Guid)) {
p.Value = item.ToString();
p.DbType = DbType.String;
p.Size = 4000;
} else if (item.GetType() == typeof(ExpandoObject)) {
var d = (IDictionary<string, object>)item;
p.Value = d.Values.FirstOrDefault();
} else {
p.Value = item;
}
//from DataChomp
if (item.GetType() == typeof(string))
p.Size = 4000;
}
cmd.Parameters.Add(p);
}
可能添加一个Geography类型的检查将解决我的问题与ExecuteNonQuery和空间数据类型,但我会检查什么类型?
if (item.GetType() == typeof(//WhatType?//)) {}
答案 0 :(得分:7)
SqlGeography正是你所寻找的。 p>
答案 1 :(得分:3)
这个怎么样?
if (item.GetType() == typeof(Microsoft.SqlServer.Types.SqlGeography))
{
SqlParameter p = new SqlParameter();
p.SqlDbType = System.Data.SqlDbType.Udt;
p.UdtTypeName = "geography";
p.Value = value;
}