本視頻和分步演練介紹如何使用實體框架設計器來映射空間類型。另外,還演示瞭如何使用 LINQ 查詢來查找兩個位置之間的距離。javascript
本演練將使用 Model First 來建立一個新數據庫,但也能夠將 EF 設計器與 Database First 工做流結合使用來映射到現有數據庫。css
空間類型支持在實體框架 5 中引入。注意:要使用空間類型、枚舉和表值函數等新特性,開發時必須面向 .NET Framework 4.5。Visual Studio 2012 默認面向 .NET 4.5。html
要使用空間數據類型,您還必須使用提供空間支持的實體框架提供程序。有關更多信息,請參見 空間類型的提供程序支持。java
存在兩種主要的空間數據類型:地理和幾何。地理數據類型用於存儲橢球數據(例如,GPS 緯度和經度座標)。幾何數據類型則用於表示歐幾里德(扁平)座標系統。web
( 更多視頻選項 — 包括下載)架構
爲完成本演練,須要安裝 Visual Studio 2012 的旗艦版、高級版、專業版或 Web Express 版本。app
顯示實體設計器,爲模型編輯提供設計圖面。
該向導執行下列操做:
如今,可生成一個基於模型的數據庫。
打開定義了 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 對象資源管理器中右鍵單擊數據庫名稱,而後選擇「刷新」。而後,右鍵單擊表,而後選擇「查看數據」。
本演練介紹瞭如何使用實體框架設計器來映射空間類型以及如何在代碼中使用空間類型。