Xamarin中的DbGeography

时间:2016-05-11 08:26:40

标签: c# database entity-framework xamarin spatial

我正在为我的数据库使用Entity Framework。所有实体都存储在引用实体框架的项目中,因为某些对象具有DbGeography(System.Data.Entity.Spatial)属性。在我的Xamarin项目中引用此项目是不可能的,因为Mono中不存在System.Configuration DLL(来自实体框架参考)。

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

编辑背景信息: 我有一个模型项目,它只包含存储在数据库中的类。此项目引用实体框架,因为某些类具有DbGeography属性。另一个项目处理数据库并创建上下文等,以将模型与数据库逻辑分开。此结构在许多项目中使用,我通过Web服务访问数据库。其中一个项目是Xamarin应用程序。这个应用程序应该使用模型项目的某些类。但由于实体框架参考,这是不可能的。我不想在应用程序中使用Entity Framework。

1 个答案:

答案 0 :(得分:1)

在澄清了您要完成的工作后,可以找到解决问题的最佳解决方案。

如果您自己制作了模型,请将它们提取到Shared / PCL库中,并在两个项目中引用它。但是,由于您使用的是驻留在实体框架库中的模型,因此您不能这样做,而是:

您必须在Xamarin端创建相同的模型,其中包含与DbGeography类类似的属性。这样,当您通过REST(或您正在使用的任何通信)收到它时,请将它们转换为您的自定义类型。

由于JSON没有保留有关原始对象类型的任何信息(默认情况下,您实际上可以配置它来执行此操作,但您在这种情况下主动要避免这样做),它应该能够转换所述对象直接指向您与Xbrin兼容的DbGeography -class类克隆。

我假设您正在使用将数据作为JSON传输的通信方法。但它也适用于XML或类似的序列化技术。但是,如果没有,请说明您实际获得(或希望)数据库与Xamarin应用程序之间的对象的方式