Entity Framework Code First (七)空间数据类型 Spatial Data Types
声明:本文针对 EF5+, Visual Studio 2012+
空间数据类型(Spatial Data Types)是在 EF5 中引入的,空间数据类型表现有两种:
- Geography (地理学上的)- 存储的是椭圆形数据,如 GPS 的经纬度坐标;
- Geometry (几何学上的)- 代表欧氏几何(平面的)坐标系统。
下面示例该数据类型的一个应用程序
新建 C# 控制台应用程序
相信 Console 应该都会建,命名为 SpatialCodeFirst
使用 Code First 建立 Model
注意为 DbGeography 添加 System.Data.Entity.Spatial 命名空间
public class University
{
public int UniversityID { get; set; }
public string Name { get; set; }
public DbGeography Location { get; set; }
}
定义DbContext 的派生类型
先要安装 Entity Framework (请参考 http://www.cnblogs.com/panchunting/p/creating-an-entity-framework-data-model-for-an-asp-net-mvc-application.html)
注意添加命名空间 System.Data.Entity, System.Data.Entity.ModelConfiguration.Conventions
class UniversityContext : DbContext
{
public UniversityContext() : base("UniversityContext") { } public DbSet<University> Universities { get; set; } protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();
}
}
定义UniversityInitializer
注意添加命名空间 System.Data.Entity, System.Data.Entity.Spatial
class UniversityInitializer : DropCreateDatabaseIfModelChanges<UniversityContext>
{
protected override void Seed(UniversityContext context)
{
var universities = new List<University>() {
new University { Name = "Graphic Design Institute", Location = DbGeography.FromText("POINT(-122.336106 47.605049)") },
new University { Name = "School of Fine Art", Location = DbGeography.FromText("POINT(-122.335197 47.646711)") }
};
universities.ForEach(s => context.Universities.Add(s));
context.SaveChanges();
}
}
配置App.config
注意黄色高亮部分,第一部分为配置数据库连接(使用 LocalDB ),第二部分为配置说明使用的 DbContext 及其初始化器
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<configSections>
<!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 -->
<section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
</configSections> <connectionStrings>
<add name="UniversityContext" connectionString="Data Source=(LocalDb)\v11.0;Initial Catalog=SpatialCodeFirst;Integrated Security=SSPI;" providerName="System.Data.SqlClient"/>
</connectionStrings> <startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
</startup>
<entityFramework>
<contexts>
<context type="SpatialCodeFirst.UniversityContext, SpatialCodeFirst">
<databaseInitializer type="SpatialCodeFirst.UniversityInitializer, SpatialCodeFirst" />
</context>
</contexts>
<defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework" />
<providers>
<provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
</providers>
</entityFramework>
</configuration>
在 Program.cs 添加代码调用
class Program
{
static void Main(string[] args)
{
using (var context = new UniversityContext())
{
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);
Console.ReadKey();
}
}
}
运行查看结果
后台数据库定义
表中数据
(localdb)\v11.0不在列表中
右击新建 Connection 即可
原文:http://msdn.microsoft.com/en-us/data/hh859721
Entity Framework Code First (七)空间数据类型 Spatial Data Types的更多相关文章
- Entity Framework Code first(转载)
一.Entity Framework Code first(代码优先)使用过程 1.1Entity Framework 代码优先简介 不得不提Entity Framework Code First这个 ...
- Entity Framework Code First属性映射约定
Entity Framework Code First与数据表之间的映射方式有两种实现:Data Annotation和Fluent API.本文中采用创建Product类为例来说明tity Fram ...
- Entity Framework Code First实现乐观并发
Entity Framework Code First实现乐观并发 不定时更新翻译系列,此系列更新毫无时间规律,文笔菜翻译菜求各位看官老爷们轻喷,如觉得我翻译有问题请挪步原博客地址 本博文翻译自: h ...
- Entity Framework Code First 学习日记(1)精
我最近几天正在学习Entity Framework Code First.我打算分享一系列的学习笔记,今天是第一部分: 为什么要使用Code First: 近 年来,随着domain driven d ...
- 补习知识:Entity Framework Code First属性映射约定
Entity Framework Code First与数据表之间的映射方式有两种实现:Data Annotation和Fluent API.本文中采用创建Product类为例来说明tity Fram ...
- How to: Use the Entity Framework Code First in XAF 如何:在 XAF 中使用EF CodeFirst
This topic demonstrates how to create a simple XAF application with a business model in a DbContext ...
- Entity Framework Code First属性映射约定 转载https://www.cnblogs.com/libingql/p/3352058.html
Entity Framework Code First属性映射约定 Entity Framework Code First与数据表之间的映射方式有两种实现:Data Annotation和Flue ...
- Entity Framework Code First学习系列目录
Entity Framework Code First学习系列说明:开发环境为Visual Studio 2010 + Entity Framework 5.0+MS SQL Server 2012, ...
- Entity Framework Code First数据库连接
1. 安装Entity Framework 使用NuGet安装Entity Framework程序包:工具->库程序包管理器->程序包管理器控制台,执行以下语句: PM> Insta ...
随机推荐
- 洛谷⑨月月赛Round2 P3392涂国旗[DP]
题目描述 某国法律规定,只要一个由N*M个小方块组成的旗帜符合如下规则,就是合法的国旗.(毛熊:阿嚏——) 从最上方若干行(>=1)的格子全部是白色的. 接下来若干行(>=1)的格子全部是 ...
- codevs 1002 搭桥
codevs 第一道题 先贴描述 1002 搭桥 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题解 查看运行结果 题目描述 Description ...
- SQL Server系统表sysobjects介绍与使用(转))
这就让sysobjects表格有了用武之地.虽然我不建议你更新这个表格,但是你当然有权对其进行审查. sysobjects 表 在数据库内创建的每个对象(约束.默认值.日志.规则.存储过程等)在表中 ...
- C语言:将结构体存放到文件中
#include <stdio.h> #include <stdlib.h> #define MAXTLEN 70 #define MAXALEN 70 #define MAX ...
- PAT 1005. 继续(3n+1)猜想 (25)
卡拉兹(Callatz)猜想已经在1001中给出了描述.在这个题目里,情况稍微有些复杂. 当我们验证卡拉兹猜想的时候,为了避免重复计算,可以记录下递推过程中遇到的每一个数.例如对n=3进行验证的时候, ...
- spring mvc总结1
1,spring下载 spring更改了官方网站后,找了很长时间没有找到相关的jar包下载路径,然后在网上终于找到相关的路径了 有个树形结构可供选择:http://repo.spring.io/rel ...
- .net混淆、反编译工具调查
常用的工具列表[比较常见的] 混淆器.加密 Dotfuscator VS默认带的工具,不过是个社区版 强度不大 dotNET Reactor 使用了NativeCode 和混淆的形式 Xenocode ...
- zabbix常用术语
zabbix常用术语
- spring发布和接收定制的事件(spring事件传播)
spring发布和接收定制的事件(spring事件传播) 2012-12-26 20:05 22111人阅读 评论(2) 收藏 举报 分类: 开源技术(如Struts/spring/Hibernat ...
- centos7下使用yum安装mysql数据库以及设置远程访问
CentOS7的yum源中默认好像是没有mysql的.为了解决这个问题,我们要先下载mysql的repo源. 1. 下载mysql的repo源 $ wget http://repo.mysql.com ...