如何将EFv5的dbGeography空间数据类型与WCF RIA域服务类一起使用

时间:2012-08-10 03:58:20

标签: metadata wcf-ria-services entity-framework-5 sqlgeography domain-service-class

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

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

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

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

1 个答案:

答案 0 :(得分: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);