2

如果我从基类使用它来定义DbGeography键:对于此类:

public class University
{
    public int UniversityID { get; set; }
    public string Name { get; set; }
    public DbGeography Location { get; set; }
}

大学类映射:

class UniversityMap : EntityTypeConfiguration<University>
{
    public UniversityMap()
    {
        this.ToTable("University");
        this.HasKey(u => u.UniversityID);

    }
}

一切都是正确的,EntityFramework 正确,但是如果我将类更改为:

public class BaseClass
{
    public int UniversityID { get; set; }
}
public class University:BaseClass
{
    public string Name { get; set; }
    public DbGeography Location { get; set; }
}

我收到以下错误:

在模型生成期间检测到一个或多个验证错误:

Data.DbGeography: : EntityType 'DbGeography' 没有定义键。定义此 EntityType 的键。DbGeographies:EntityType:EntitySet 'DbGeographies' 基于没有定义键的类型'DbGeography'。

!!!???谢谢

4

2 回答 2

1

也许你不小心删除public int DBGeographyID{ get; set; }了课堂上的财产DBGeography

[更新]

哈!在网上看到了一些东西。也许您使用了错误的命名空间。

而不是System.Data.Entity.Spatial你可能正在使用System.Data.Spatial。我在这个链接中看到了。

于 2013-08-08T08:28:53.147 回答
0

猜测一下,EF 会感到困惑,因为键的名称与它定义的类的名称不匹配。看起来很明显,UniversityID存在于一个名为 的类中University,但它没有在该类中定义,所以也许EF 缺少它。

[Key]在属性上贴一个UniversityID,看看是否有帮助。

于 2013-08-08T09:45:03.113 回答