当前位置:Gxlcms > 数据库问题 > SQL Server 2008空间数据应用系列八:基于Bing Maps(Silverlight)的空间数据存储
SQL Server 2008空间数据应用系列八:基于Bing Maps(Silverlight)的空间数据存储
时间:2021-07-01 10:21:17帮助过:5人阅读
TABLE[dbo].[DrawnPolygons]( [ID][int]IDENTITY(1,1) NOTNULL, [Name][varchar](50) NOTNULL, [Polygon][geography]NOTNULL) GO
二、编写入库存储过程
目前Linq To Sql和ASP.NET Entity Framework都不支持SQL Server 2008的空间数据类型,前台只能通过字符串或者对象的形式将数据传递到后台服务端,然后通过调用存储过程,在存储过程中对空间数据的字符串进行空间数据对象转换,然后入库。针对上面所创建的空间数据表可以创建如下存储过程来实现多边形空间数据的入库存储。
SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATEPROCEDURE[dbo].[SavePolygon] ( @namevarchar(50), @polytextvarchar(max), @identityint OUTPUT ) AS INSERTINTO dbo.DrawnPolygons (Name,Polygon) VALUES (@name, geography::STPolyFromText(@polytext, 4326)) SET@identity=@@Identity
RETURN
三、编写服务接口
入库接口可以采用WebService或者WCF技术提供,本篇采用WCF作为数据操作接口技术,Linq To Sql做数据访问,自定义方法调用存储过程实现数据库入库操作。
在项目中添加Linq To Sql文件,然后打开对于的代码隐藏文件,在Linq To Sql自动生产的创建数据库连接的代码下面添加如下自定义方法实现数据库存储过程的调用。
for (var i = arrayOfLatLong.Count; i >=1; i--) { var j = i -1; sb.Append(arrayOfLatLong[j].Longitude.ToString()); sb.Append(""); sb.Append(arrayOfLatLong[j].Latitude.ToString()); sb.Append(","); }