2011-04-13 63 views
4

我期待重構這個方法(從Massive.cs by Rob Conery):ADO類型是SQL Server 2008中的地理空間類型?

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); 
} 

很有可能增加對地理類型將解決我與的ExecuteNonQuery和空間數據類型的問題進行檢查,但我會檢查什麼類型的?

if (item.GetType() == typeof(//WhatType?//)) {}

回答

7

SqlGeography是你在找什麼,我相信。

+0

謝謝,一旦我回到我的工作站,我會檢查這個......雖然看起來很不錯。欣賞你的時間。 – Chaddeus 2011-04-14 00:59:08

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; 
}