【问题标题】:The table/view does not have a primary key defined表/视图没有定义主键
【发布时间】:2012-12-22 10:11:22
【问题描述】:

我正在尝试将数据绑定与 WPF 和实体框架一起使用。

将数据源添加到我的项目后,我保存了我的项目,以查看在我完成之前是否一切正常。

但我有 11 条警告/信息消息说明:

表/视图“MyDataBase.TableName”没有定义主键。已推断出密钥,并将定义创建为只读表/视图。

我有 14 个表,其中 4 个表有自己的主键,其他表使用外键相互引用

这个问题是关于什么的? 请帮忙

【问题讨论】:

    标签: wpf sql-server-2008 entity-framework-4 entity-framework-4.1


    【解决方案1】:

    EF 中的每个实体都必须是唯一可识别的。 EF 使用数据库主键来定义实体键。虽然在某种程度上可以在没有主键的情况下工作,但绝对不推荐它,因为它会导致很多问题。错误中直接提到了核心问题 - 如果表没有主键,则 EF 将其标记为只读,因为它不确定它是否可以唯一标识要更新的记录。

    【讨论】:

    • 我可以在构建项目时克服这个警告/信息吗?还是我必须采取任何其他严肃的方法来克服这个问题?
    • 这只是一个警告,所以除非您的项目设置在警告时编译失败,否则您应该能够编译该项目。我什至不确定来自 EDMX 验证的警告是否会中止构建。
    • 我现在构建了我的应用程序,我只显示了 11 条消息
    【解决方案2】:

    确实,这只是一个警告,但您将永远无法使用 Save 函数,在我的情况下,这使得 EF 对我来说毫无价值,因为我一直在处理设计不佳的数据库。

    【讨论】:

      【解决方案3】:

      您只需从项目中删除 EDMX 文件。现在移动到您的数据库并向每个表添加主键。之后将新的 EDMX 添加到您的项目中。它会正常工作。并且不要忘记从项目中的配置文件中删除 connectionString 标记。

      【讨论】:

        【解决方案4】:

        在您的表中定义主键并更新实体数据模型。您可以在打开 EF 模型并右键单击并选择更新后执行此操作。从窗口中选择刷新选项并验证您的模型。

        【讨论】:

          猜你喜欢
          • 2014-09-07
          • 2016-02-02
          • 1970-01-01
          • 2016-08-05
          • 1970-01-01
          • 2015-11-11
          • 2021-08-06
          • 2014-01-27
          • 1970-01-01
          相关资源
          最近更新 更多