如果我使用基类定义键,则会发生错误
本文关键字:错误 基类 定义 如果 | 更新日期: 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]
,看看是否有帮助。