2014-04-25 2 views
5

Net-Web-Anwendung mit. NET 4.0-Framework.Was ist C# entspricht geography sql server datentyp in .net framework 4.0?

Ich habe eine Stored Procedure, die Geografie-Datentyp in SQL Server 2008 R2 akzeptiert.

Ich möchte Daten aus C# -Code in SQL Server einfügen.

Aber ich bin nicht in der Lage zu finden, welchen Datentyp ich in C# verwenden soll, die SQL Server 2008-Datentyp entspricht.

+1

I byte [] übernehmen würde. Das hängt davon ab, ob Sie ADO.NET, Entity Framework usw. verwenden. –

Antwort

2

Wenn Sie Entity-Framework verwenden, dann suchen Sie nach dem Dateityp DbGeography.

Hier finden Sie weitere Informationen zum DbGeography-Objekt ->Details.

+0

DbGeography befindet sich im Namespace System.Data.Entity, der Entity Framework ... Ich weiß nicht, dass er das verwendet ... –

3

Es klingt offensichtlich, aber warum nicht den gleichen Datentyp verwenden, der als UDT in SQL Server - SqlGeography installiert wurde?

Das folgende funktioniert gut gegen eine SQL Server 2012-Instanz. Ich bin nicht in der Lage gegen SQL Server testen 2008, aber ich würde davon ausgehen, es sollte die gleiche Arbeit:

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

}