在.NETFramework4.0中,sql server数据类型的C#等价物是什么?
net web应用程序使用.NET4.0框架 我有一个在SQLServer2008R2中接受地理数据类型的存储过程 我想将C代码中的数据插入SQL Server在.NETFramework4.0中,sql server数据类型的C#等价物是什么?,c#,asp.net,sql-server,sql-server-2008,.net-4.0,C#,Asp.net,Sql Server,Sql Server 2008,.net 4.0,net web应用程序使用.NET4.0框架 我有一个在SQLServer2008R2中接受地理数据类型的存储过程 我想将C代码中的数据插入SQL Server 但是我找不到我应该在C#中使用哪个数据类型,它相当于SQL Server 2008数据类型。如果您使用的是实体框架,那么您搜索的数据类型是DbGeography 下面是关于DbGeography object->的更多信息。这听起来很明显,但是为什么不使用与SQL Server中作为UDT安装的数据类型相同的数据类型呢 以下内容在SQL
但是我找不到我应该在C#中使用哪个数据类型,它相当于SQL Server 2008数据类型。如果您使用的是实体框架,那么您搜索的数据类型是DbGeography
下面是关于DbGeography object->的更多信息。这听起来很明显,但是为什么不使用与SQL Server中作为UDT安装的数据类型相同的数据类型呢 以下内容在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();
}
}
}
这不是
DbGeography
类吗
命名空间:System.Data.Spatial
程序集:System.Data.Entity(在System.Data.Entity.dll中)
我假设字节[]。取决于您是否使用ADO.NET、实体框架等。DbGeography位于System.Data.Entity命名空间中,即实体框架。。。我不知道他是否在使用它……如果您使用的是EntityFramework,那么您应该为您的模型属性使用
DbGeography
,该属性在下面使用SqlGeography
hood@ChrisSchaller-其他答案已经涵盖了这一点,但问题中仍然没有迹象表明OP是否使用EF。