【问题标题】:Code-first migration errors with EntityFramework Identity foreign keyingEntityFramework Identity 外键的代码优先迁移错误
【发布时间】:2015-12-22 09:00:23
【问题描述】:

我有一个这样定义的模型类:

public class Request
{
    public int Id { get; set; }
    [ForeignKey("Requester")]
    public string RequesterId { get; set; }
    public virtual ICollection<ApplicationUser> Requester { get; set; }
}

我只是在请求和发出请求的用户之间建立外键关系。但是,当我尝试执行 Add-Migration 时,我收到以下错误:

Project.DataContexts.IdentityUserLogin: : EntityType 'IdentityUserLogin' 没有定义键。定义此 EntityType 的键。 Project.DataContexts.IdentityUserRole: : EntityType 'IdentityUserRole' 没有定义键。定义此 EntityType 的键。 IdentityUserLogins:EntityType:EntitySet 'IdentityUserLogins' 基于没有定义键的类型'IdentityUserLogin'。 IdentityUserRoles: EntityType: EntitySet 'IdentityUserRoles' 基于没有定义键的类型'IdentityUserRole'。

我环顾四周,唯一类似的情况是人们使用 Fluent-API 和模型绑定。但是,我正在使用数据注释。对此有什么帮助吗?谢谢!

【问题讨论】:

    标签: asp.net-mvc entity-framework foreign-keys


    【解决方案1】:

    该错误会告诉您确切的问题所在。您的IdentityUserLoginIdentityUserRole 类没有标有[Key] 或可以根据约定解释为主键的属性。为什么你们不都发布异常中明确提到的类,这超出了我的理解。

    【讨论】:

    • 因为它们是 EntityFramework 标识的一部分,不是我编写的,也不是我的代码中的物理内容,它们位于 EntityFramework 库中。
    • 不,他们不是。它引用 Project.DataContexts 作为命名空间。这意味着那里有一个自定义类,它恰好与 Identity 类命名相同。您可以将自己的实体与 Identity 一起使用,它们只需从某些基类继承或实现某些接口。
    • 作为创建这个项目的人,不,该命名空间中绝对没有自定义类。在我的数据上下文文件夹中,我有 2 个用于迁移的文件夹,以及 2 个仅包含用于我的身份和请求上下文的类构造函数的文件。
    • 不知道该告诉你什么,但和我争吵不是解决办法。这些类要么存在,要么存在包含它们的旧版本。无论如何,EF认为他们在那里。内置的 Identity 类都已正确实现,否则对任何人都不起作用。清理您的解决方案并重建,启动一个新的解决方案,等等。有些东西在那里或至少在附近。
    猜你喜欢
    • 2019-11-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-04
    • 1970-01-01
    • 1970-01-01
    • 2013-01-02
    • 2013-10-03
    相关资源
    最近更新 更多