标签:
本视频和分步演练介绍如何使用实体框架设计器来映射空间类型。另外,还演示了如何使用 LINQ 查询来查找两个位置之间的距离。
本演练将使用 Model First 来创建一个新数据库,但也可以将 EF 设计器与 Database First 工作流结合使用来映射到现有数据库。
空间类型支持在实体框架 5 中引入。注意:要使用空间类型、枚举和表值函数等新特性,开发时必须面向 .NET Framework 4.5。Visual Studio 2012 默认面向 .NET 4.5。
要使用空间数据类型,您还必须使用提供空间支持的实体框架提供程序。有关更多信息,请参见 空间类型的提供程序支持。
存在两种主要的空间数据类型:地理和几何。地理数据类型用于存储椭球数据(例如,GPS 纬度和经度坐标)。几何数据类型则用于表示欧几里德(扁平)坐标系统。
为完成本演练,需要安装 Visual Studio 2012 的旗舰版、高级版、专业版或 Web Express 版本。
显示实体设计器,为模型编辑提供设计图面。
该向导执行下列操作:
现在,可生成一个基于模型的数据库。
打开定义了 Main 方法的 Program.cs 文件。在 Main 函数中,添加以下代码。
这段代码向上下文中添加了两个新的 University 对象。空间属性使用 DbGeography.FromText 方法进行初始化。表示为 WellKnownText 的地理点传入该方法。接着,该代码保存数据。然后,构造并执行 LINQ 查询,该查询返回一个位置相距特定位置最近的 University 对象。
using (var context = new UniversityModelContainer()) { context.Universities.Add(new University() { Name = "Graphic Design Institute", Location = DbGeography.FromText("POINT(-122.336106 47.605049)"), }); context.Universities.Add(new University() { Name = "School of Fine Art", Location = DbGeography.FromText("POINT(-122.335197 47.646711)"), }); context.SaveChanges(); var myLocation = DbGeography.FromText("POINT(-122.296623 47.640405)"); var university = (from u in context.Universities orderby u.Location.Distance(myLocation) select u).FirstOrDefault(); Console.WriteLine( "The closest University to you is: {0}.", university.Name); }
编译并运行应用程序。该程序生成以下输出:
The closest University to you is: School of Fine Art. |
若要查看数据库中的数据,请在 SQL Server 对象资源管理器中右键单击数据库名称,然后选择“刷新”。然后,右键单击表,然后选择“查看数据”。
本演练介绍了如何使用实体框架设计器来映射空间类型以及如何在代码中使用空间类型。
标签:
原文地址:http://www.cnblogs.com/qq260250932/p/4245841.html