我正在使用现在具有地理数据类型的EFv5。所以我有一个名为Place的实体,它有一个名为geoLocation的属性,属于地理类型。 VS 2012已自动为此实体创建了代码,此地理类型的属性类型已声明为System.Data.Spatial.DbGeography。所以一切都很好。
但是当我添加域服务类并勾选以包含我的场所实体时,解决方案停止编译,因为domainservice.metaData.cs文件似乎无法为地理类型创建属性。我得到一个“实体'SilverlightApplication1.Web.Place'有一个属性'GeoLocation'具有不支持的类型”错误消息。
那么如何在我的域服务类中包含此地理数据类型?
我尝试手动将属性添加到创建的元数据文件中,但仍然会收到相同的错误消息。
答案 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);