“定义此EntityType的密钥。”当包含ApplicationUser类型的属性时

时间:2014-04-09 19:24:52

标签: c# asp.net asp.net-mvc entity-framework

我正在编写C#/ ASP.NET MVC5 Web应用程序,当我尝试进行新的迁移时,我遇到了以下错误

ToTheMoon.DAL.IdentityUserLogin: : EntityType 'IdentityUserLogin' has no key defined. Define the key for this EntityType.
ToTheMoon.DAL.IdentityUserRole: : EntityType 'IdentityUserRole' has no key defined. Define the key for this EntityType.
IdentityUserLogins: EntityType: EntitySet 'IdentityUserLogins' is based on type 'IdentityUserLogin' that has no keys defined.
IdentityUserRoles: EntityType: EntitySet 'IdentityUserRoles' is based on type 'IdentityUserRole' that has no keys defined.

我在我的一个模型中包含了ApplicationUser类型的属性(?)。我相信这就是造成它的原因:

public ApplicationUser Requester { get; set; }

我很清楚这一事实 - 一般来说 - 我应该用[Key]注释明确标记某个键,但我不相信这适用,因为错误消息描述的是类的一部分MVC5的'电池包含'登录系统。

我已经看到一些关于这是由于错误地覆盖一个方法(不记得它现在是什么)引起的,但我不这样做,所以我在网上找到的所有其他问题对我来说都没用

感激不尽。

编辑:这是我的背景,它非常裸露。

public class ApplicationDbContext : IdentityDbContext<ApplicationUser>
{
    public ApplicationDbContext() : base("DefaultConnection") { }
}

1 个答案:

答案 0 :(得分:0)

问题中的评论:

添加ApplicationUser Requester属性的实体似乎在不同的上下文中定义。因为它在不同的上下文中,所以上下文对所有Identity实体的配置一无所知,因为它是由IdentityDbContext.OnModelCreating方法设置的。