簡體   English   中英

DbGeography替代C#POCO

[英]DbGeography Alternative for C# POCO

我正在編寫一個應用程序,我需要查詢某個位置半徑內的記錄。 我開始在我的PCO上只有一對緯度/長的屬性,但意識到SQL中的空間搜索是針對列類型的地理位置完成的,這種搜索在POCO中轉換為DbGeography(在另一個SO帖子中引用,也使用EF Powertools Reverse)工程師POCO)。

所以,我看到的問題是我盡可能保持我的POCOS干凈,盡可能地將所有引用/依賴關系遺漏給實體框架和持久性存儲。 我在模型/域組件中有我的POCOS,它永遠不應該引用EF。 只有我的Repository類和DataStore for DbContext子類和Fluent Configuration項目才知道EF。 我還使用流暢的配置遠離DataAnnotation屬性。 一旦你放入DbGeography你需要'使用System.Data.Entity.Spatial'和'EF'打破持久性不可知的方法,至少對於“普通”的舊C#對象

有了這么多的數據庫平台,並且盡可能地使這個系統成為未來的證明,並且在我想切換到另一個持久性存儲的事件中重寫數據存儲代碼的最小努力,保持我的域代碼盡可能干凈是非常重要的。 我發現基於EF流暢的基於代碼的配置被引入並且允許我們不必使用DataAnnotations屬性因此保持System.Data.Entity不在混合中,但是在空間上他們打破了模式。

有誰知道如何處理我正在嘗試做的事情?

- 斯科特評論后更新:所以還有一個小問題。 我有對System.Data.Entity的引用,我在我的模型上有這個: public System.Data.Spatial.DbGeography GeoLocation {get; 組; }

我在配置類中有這個: this.Property(t => t.GeoLocation).HasColumnName(“GeoLocation”)。HasColumnType(“geography”);

this.Property得到下划線,我得到這個編譯錯誤: 嚴重性代碼描述項目文件行抑制狀態錯誤CS0453類型'DbGeography'必須是非可空值類型才能在泛型類型中用作參數'T'或方法'StructuralTypeConfiguration.Property(Expression>)'FoodRadar.DataStore C:\\ Developer \\ SrcSt \\ FoodRadar \\ FoodRadar.DataStore \\ Configuration \\ VendorConfiguration.cs 66 Active

我嘗試了另一個使用t4模板的反向poco生成器,它使用System.Data.Entity.Spatial.DbGeography生成,但仍需要引用EntityFramework。

我該如何指定映射?

從.NET 4.5開始,他們意識到需要將DbGeography作為核心.NET Framework的一部分,並將其從EntityFramework.dll移到System.Data.Entity.dll中 ,這是他們現在提供的ORM Agnostic API,以便EF任何其他ORM都可以構建它。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM