2016-05-11 49 views
0

我正在爲我的數據庫使用實體框架。所有實體都存儲在一個引用實體框架的項目中,因爲某些對象具有DbGeography(System.Data.Entity.Spatial)屬性。在我的Xamarin項目中引用這個項目是不可能的,因爲System.Configuration DLL(來自實體框架引用)在Mono中不存在。Xamarin的DbGeography

是否可以在Xamarin中使用DbGeography屬性?

編輯背景信息: 我有一個模型項目,它只包含存儲在數據庫中的類。該項目引用實體框架,因爲某些類具有DbGeography屬性。另一個項目處理數據庫並創建上下文等,將模型從數據庫邏輯中分離出來。這個結構在很多項目中都有使用,我通過Web服務訪問數據庫。其中一個項目是Xamarin應用程序。這個應用程序應該使用模型項目的一些類。但由於實體框架參考,這是不可能的。我不想在應用程序中使用實體框架。

+0

(有人糾正我,如果我錯了,但:)我相信實體框架不能在Xamarin上運行,因爲框架根本不支持它。你可能會想要的是沿着SQLite的方向。如果您提供更多關於您實際嘗試完成的信息,或許我們可以提出一個更合適的選擇? – Falgantil

+0

感謝您的回覆!我不想在Xamarin中運行實體框架,但我想使用一些具有DbGeography屬性的類。我在問題中增加了更多信息。 – jasdefer

回答

0

在澄清你正在努力完成的事情之後,下面是針對你的問題的(可以說是)最好的解決方案。

如果您自己製作模型,請將它們提取到Shared/PCL庫中,並在兩個項目中引用它們。但是因爲您使用的是實體框架庫中的模型,所以您不能這樣做,而不是:

您必須在Xamarin-end上創建包含與DbGeography類相似的屬性的相同模型。這樣,當你通過REST(或者你正在使用的任何通信)收到它時,將它們轉換爲你的自定義類型。由於JSON不保留關於原始對象類型的任何信息(默認情況下,你可以實際配置它來做到這一點,但你主動希望避免這樣做),它應該能夠轉換所說的直接對您的'Xamarin兼容的DbGeography'類的克隆。

我假設您使用的通信方法將數據傳輸爲JSON。但它也適用於XML或類似的序列化技術。但是,如果沒有,請說明你實際得到(或希望)數據庫和Xamarin應用程序之間的對象的方式

+0

謝謝你的回答。我真的很想避免複製模型,因爲它會不時地改變。這是我轉向Xamarin的原因之一。我還想過創建相關類的視圖,可以顛倒過來避免手動複製。但是在沒有引用實體框架的情況下,是否有可能使用這些DbGeography屬性? – jasdefer

+0

你實際上是否需要所有的屬性?你只能實現你實際使用的屬性。從JSON映射時其餘的將被忽略。這樣,至少在某種程度上保證了服務器上的更改。 – Falgantil