Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
751 views
in Technique[技术] by (71.8m points)

asp.net - What is C# equivalent of geography sql server datatype in .net framework 4.0?

net web application using .net 4.0 framework.

I have a Stored Procedure which accepts geography datatype in sql server 2008 R2.

I want to insert data from C# code into SQL Server.

But I'm not able to find which datatype I should use in C# that is equivalent to SQL Server 2008 datatype.

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

It may sound obvious, but why not use the same data type that has been installed as a UDT in SQL Server - SqlGeography?

The following works fine against a SQL Server 2012 instance. I'm unable to test against SQL Server 2008 but I'd assume it should work the same:

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

}

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...