博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Entity Framework Code First (七)空间数据类型 Spatial Data Types
阅读量:5053 次
发布时间:2019-06-12

本文共 2579 字,大约阅读时间需要 8 分钟。

  声明:本文针对 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 (请参考

  注意添加命名空间 System.Data.Entity, System.Data.Entity.ModelConfiguration.Conventions

class UniversityContext : DbContext{    public UniversityContext() : base("UniversityContext") { }    public DbSet
Universities { get; set; } protected override void OnModelCreating(DbModelBuilder modelBuilder) { modelBuilder.Conventions.Remove
(); }}

定义UniversityInitializer

  注意添加命名空间 System.Data.Entity, System.Data.Entity.Spatial

class UniversityInitializer : DropCreateDatabaseIfModelChanges
{ protected override void Seed(UniversityContext context) { var universities = new List
() { 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 及其初始化器

在 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 即可

  原文:

 

转载于:https://www.cnblogs.com/panchunting/p/entity-framework-code-first-Spatial.html

你可能感兴趣的文章
liunx系统虚拟机下安装tomcat9以及访问tomcat案例
查看>>
Oracle 插入Date数据
查看>>
word文档操作
查看>>
UIpageControl
查看>>
js判断是否为IE浏览器,是返回true,否返回false
查看>>
Linux性能分析 vmstat基本语法
查看>>
SpringMVC框架学习笔记(2)——使用注解开发SpringMVC
查看>>
深入理解递归函数的调用过程
查看>>
《在C#中实现Socket端口复用》 以及《 UDP 一个封锁操作被对 WSACancelBlockingCall 的调用中断。》问题...
查看>>
PDF格式的“在线阅读”和“下载”
查看>>
无耻之徒(美版)第七季/全集Shameless US迅雷下载
查看>>
svn cleanup failed–previous operation has not finished; run cleanup if it was interrupted
查看>>
Webpack4 学习笔记四 暴露全局变量、externals
查看>>
CF1005F Berland and the Shortest Paths
查看>>
vscode点击ctrl键报错Request textDocument/definition failed.
查看>>
图王:刺客——运筹帷幄善于在变化中找到方向的站长
查看>>
Safari无痕浏览影响localStorage
查看>>
POJ 3368 Frequent values (RMQ,4级)
查看>>
java 练习题3
查看>>
对象生命周期的简单理解
查看>>