【发布时间】:2017-11-05 10:07:35
【问题描述】:
我在正确设置导航属性时遇到了问题,因为我收到了错误
外键组件 ID 不是管理员类型的声明属性。
我的模型基本上由一个基类User 组成,它有两个派生类Administrator 和Common 用户。我相信这是一对多的关系,因为可以有多个普通用户和管理员用户。
我的课程如下所示:
[Table("User")]
public class User
{
[Key]
public int ID { get; set; }
public string UserName { get; set; }
public string Password { get; set; }
public DateTime RegisterDate { get; set; }
public virtual ICollection<Common> CommonUsers { get; set; }
public virtual ICollection<Administrator> Administrators { get; set;}
}
public class Administrator : Usuario
{
[ForeignKey("User")]
public int ID { get; set; }
public virtual User User { get; set; }
}
public class Common : Usuario
{
[ForeignKey("User")]
public int ID { get; set; }
public virtual User User { get; set; }
}
我在派生类中的两个 ID 属性上设置了外键,以引用作为表的主键的用户 ID。 任何意见将不胜感激。
【问题讨论】:
-
我相信这是一对多的关系不,它是继承,你应该从子类中完全删除 ID 属性。
-
@GertArnold 我之前添加了它们,因为我遇到了类似的错误,但现在我可以正确创建脚手架项目。非常非常感谢你。我花了几个小时在这上面:)。你可以把它作为一个答案,我会标记它是正确的。
-
@GertArnold 另外,当我从这个模型创建数据库时,它将如何在数据库中为这个派生类创建一个外键?。
-
什么的外键?默认情况下,所有类型都将位于一个带有鉴别器列的表中。 (TPH)。
标签: c# asp.net entity-framework