2014-04-25 13 views

cevap

2

Öğe çerçevesi kullanıyorsanız, aradığınız veri türü DbGeography'dir.

DbGeography nesnesi hakkında daha fazla bilgi ->Details.

+0

DbGeography, Entity Framework olan System.Data.Entity ad alanında ... Bunu kullandığını bilmiyorum ... –

3

Açık görünüyor, ancak SQL Server - SqlGeography'da UDT olarak yüklenen aynı veri türünü neden kullanmıyorsunuz?

Aşağıdakiler, bir SQL Server 2012 örneğine göre düzgün çalışır. SQL Server 2008 karşı test edemiyorum ama aynı çalışması gerekir varsaymak istiyorum:

using System; 
using Microsoft.SqlServer.Types; 
using System.Data.SqlClient; 
using System.Data; 

namespace ConsoleApplication4 
{ 
    class Program 
    { 
     static void Main() 
     { 
      var geom1 = SqlGeography.STGeomFromText(
         new System.Data.SqlTypes.SqlChars(
         "LINESTRING(-122.360 47.656, -122.343 47.656)"), 4326); 
      var geom2 = SqlGeography.STGeomFromText(
         new System.Data.SqlTypes.SqlChars(
         "LINESTRING(-100.0 45.0, -1420 49.0)"), 4326); 
      using(var conn = new SqlConnection(
        @"Server=Server;Database=master;Integrated Security=SSPI;")) 
      { 
       using (var cmd = new SqlCommand(
        "select @parm1.STIntersects(@parm2)", conn)) 
       { 
        var p1 = cmd.Parameters.Add("@parm1", SqlDbType.Udt); 
        p1.UdtTypeName = "geography"; 
        p1.Value = geom1; 
        var p2 = cmd.Parameters.Add("@parm2", SqlDbType.Udt); 
        p2.UdtTypeName = "geography"; 
        p2.Value = geom2; 
        conn.Open(); 
        Console.WriteLine(cmd.ExecuteScalar()); 
       } 
      } 
      Console.ReadLine(); 
     } 
    } 

}