使用DbGeography与EF6 + SqlServerCe.4.0(.sdf数据库)。理论上可能但不起作用

时间:2014-06-08 22:27:51

标签: entity-framework ef-code-first sql-server-ce spatial

根据这个:
http://msdn.microsoft.com/en-us/library/ms172417.aspx,可以使用“DbGeography”,因为它将映射到数据库端的“image”。 (与使用枚举时一样,它们映射到整数)

然而,

如果我有这个:

public class Something
{
    public long SomethingId { get; set; }
    public string Name { get; set; }
    public DbGeography Location { get; set; }
}

首次创建数据库时(使用带有“Code First”方法的EF6),我得到了这个例外:

There is no store type corresponding to the EDM type 'Edm.Geography(Nullable=True)' of primitive type 'Geography'.

我的连接字符串如下:

<add name="MyDbContext" connectionString="Data Source=|DataDirectory|MyDatabase.sdf" providerName="System.Data.SqlServerCe.4.0" />

我做错了什么? 我查了一下,我的EF的dll是版本6

1 个答案:

答案 0 :(得分:0)

您不能这样做,MSDN文章指的是复制组件将此列类型中的数据移动到SQL Compact中的“image”列。

您必须使用:

[MaxLength]
public byte[] Location { get; set; } 

存储数据,并使用Spatial库在您的应用中来回转换