【问题标题】:The entity type requires a primary key to be defined. If you intended to use a keyless entity type call over multiple projects?实体类型需要定义一个主键。如果您打算对多个项目使用无密钥实体类型调用?
【发布时间】:2021-12-31 01:30:22
【问题描述】:

我正在为一个项目创建 EF3 解决方案。

我有 3 个数据库,地点、餐饮和活动。 每当我运行事件时,我都会收到错误:

实体类型“MenuFoodItem”需要定义一个主键。如果您打算使用无密钥实体类型调用“HasNoKey()”。

我不知道为什么会这样,因为当我运行 Catering 时,MenuFoodItem 类所在的位置它运行并完美地创建了数据库。

https://github.com/vortexismlg/ThAmCoAssignment

考虑到餐饮本身就可以正常工作,我不知道是什么原因造成的?

【问题讨论】:

    标签: entity-framework entity-framework-core


    【解决方案1】:

    您遇到的错误是因为 EF 期望每个表都有一个 Key 属性,按照惯例,它会查找名为 ID 或 TableNAme+ID(如 BookId)的属性以使其成为 Primary Key

    如果您的表没有primary key,您只需使用[KeyLess]@您的班级[KeyLess],或者如果您通过Fluent api 配置您的模型只需使用 eb.HasNoKey();

    【讨论】:

    • 但是为什么它只是在创建场地时可以正常工作呢?这个问题只发生在事件上
    • 在场所中,您在 Code 上定义了[Key, MaxLength(5)]。这使代码成为主键
    • 对不起,我的意思是餐饮,MenuFoodItem 除了 ThAmCo 上下文中的外键之外没有键集。那么为什么它在那里有效,但在我的事件中却无效?
    • MenuFoodItem 是一个 Join Table ,实际上它提供了 Many-To-Many 关系。看看这个链接docs.microsoft.com/en-us/ef/core/modeling/…
    • 是的,我明白这一点,但是为什么当我尝试在与 MenuFoodItem 无关的事件上添加迁移时,这只是一个问题?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-11-10
    • 1970-01-01
    • 2021-05-11
    • 1970-01-01
    • 2016-04-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多