如果我使用基类定义键,则会发生错误

本文关键字:错误 基类 定义 如果 | 更新日期: 2023-09-27 18:27:01

如果我从基类中使用它来定义键,我会在 EF6 实体类型中定义DbGeography(我在 EF5 中没有此错误(实体类型时出现错误:对于此类:

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);
    }
}

一切都是正确的,实体框架做对了,但是如果我将类更改为:

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

我收到以下错误:

在模型生成过程中检测到一个或多个验证错误:

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

!!???谢谢

如果我使用基类定义键,则会发生错误

也许您不小心删除了DBGeography类中的public int DBGeographyID{ get; set; }属性?

[更新]

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

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

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

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