Подтвердить что ты не робот

EntityType 'DbGeography' не имеет определенного ключа

Длительный прослушиватель, первый раз вызывающий (наконец, сделал учетную запись здесь!)...

Я использую Visual Studio 2013 с .NET 4.5.1 и Entity Framework 6 (окончательные версии, а не RC или бета).

При попытке добавить свойство DbGeography к моей сущности я получаю эту ошибку после выполнения:

    One or more validation errors were detected during model generation:
    Geocoder.DbGeography: : EntityType 'DbGeography' has no key defined.
    Define the key for this EntityType.
    DbGeographies: EntityType: EntitySet 'DbGeographies' is based on type 'DbGeography' that has no keys defined.

Я уже подтвердил, что у меня нет ссылок на более старые версии Entity Framework (обсуждаются здесь). Я использовал этот пост и эту статью MSDN для примеров/информации, так как это это мой первый набег на пространственные типы в .NET(и SQL Server, если на то пошло).

Вот моя сущность:

public class Location
{
    public int Id { get; set; }
    public string Name { get; set; }
    public string Address1 { get; set; }
    public string Address2 { get; set; }
    public string City { get; set; }
    public virtual State State { get; private set; }
    public string ZipCode { get; set; }
    public string ZipCodePlus4 { get; set; }
    public DbGeography Geocode { get; set; }
    public Hours Hours { get; set; }
    public virtual ICollection<Language> Languages { get; private set; }
    public virtual OfficeType OfficeType { get; private set; }

    [JsonIgnore]
    public virtual ICollection<ProviderLocation> Providers { get; private set; }
}

Что я делаю неправильно?

4b9b3361

Ответ 1

Это оказалось противоположностью тому, что я читал из собственного ответа Microsoft о подобной проблеме в Codeplex здесь, и даже их здесь. Я интерпретировал это неправильно? Обе эти ссылки указывают, что в EF 6 тип данных DbGeography был перенесен из System.Data.Entity.Spatial только в System.Data.Spatial, но обратное кажется правдой.

Я изменил

using System.Data.Spatial;

к

using System.Data.Entity.Spatial;

и он работает.