什么是.net framework 4.0中的地理sql server数据类型的C#等价物?

Bri*_*raj 9 c# sql-server asp.net .net-4.0 sql-server-2008

使用.net 4.0框架的网络Web应用程序.

我有一个存储过程,它接受sql server 2008 R2中的地理数据类型.

我想将C#代码中的数据插入SQL Server.

但我无法找到我应该在C#中使用哪种数据类型,它等同于SQL Server 2008数据类型.

Mis*_*sky 13

如果您使用实体框架,那么您搜索的数据类型是 DbGeography。

以下是有关 DbGeography 对象的更多信息 -> Details


Dam*_*ver 5

听起来似乎很明显,但是为什么不使用SQL Server中已作为UDT安装的数据类型SqlGeography呢?

以下对SQL Server 2012实例适用。我无法针对SQL Server 2008进行测试,但是我认为它应该可以正常运行:

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

}
Run Code Online (Sandbox Code Playgroud)