3

我正在使用现在具有地理数据类型的 EFv5。所以我有一个名为 Place 的实体,它有一个名为 geoLocation 的属性,它属于地理类型。VS 2012 已自动为该实体创建代码,并且该地理类型的属性类型已声明为 System.Data.Spatial.DbGeography。所以一切正常。

但是,当我添加域服务类并勾选包含我的地点实体时,解决方案将停止编译,因为 domainservice.metaData.cs 文件似乎无法为地理类型创建属性。我收到“实体‘SilverlightApplication1.Web.Place’的属性‘GeoLocation’的类型不受支持”错误消息。

那么如何在我的域服务类中包含这个地理数据类型呢?

我试图手动将属性添加到创建的元数据文件中,但我仍然收到相同的错误消息。

4

1 回答 1

3

我在 MVC 项目的域类中成功使用了 DbGeography 类型。

我将我的域类定义如下。

using System.Data.Spatial;

namespace MyApp.DomainClasses
{
    public class Address
    {
        public int Id { get; set; }
        public string StreetAddress { get; set; }
        public string InternalMailCode { get; set; }
        public string City { get; set; }
        public string Country { get; set; }
        public string PostalCode { get; set; }
        public string StateProvince { get; set; }
        public DbGeography Location { get; set; }

    }
} 

然后我可以用这样的东西查询。

var myLocation = DbGeography.FromText(gpsLocation);

var addresses= (from a in context.Addresses
               orderby a.Location.Distance(myLocation)
               select a).Take(10);
于 2014-01-28T18:10:56.537 回答