我正在尝试将数据绑定与 WPF 和实体框架一起使用。
将数据源添加到我的项目后,我保存了我的项目,以查看在我完成之前是否一切正常。
但我有 11 条警告/信息消息说明:
表/视图“MyDataBase.TableName”没有定义主键。已推断出密钥,并将定义创建为只读表/视图。
我有 14 个表,其中 4 个表有自己的主键,其他表使用外键相互引用
这个问题到底是怎么回事?请帮助
我正在尝试将数据绑定与 WPF 和实体框架一起使用。
将数据源添加到我的项目后,我保存了我的项目,以查看在我完成之前是否一切正常。
但我有 11 条警告/信息消息说明:
表/视图“MyDataBase.TableName”没有定义主键。已推断出密钥,并将定义创建为只读表/视图。
我有 14 个表,其中 4 个表有自己的主键,其他表使用外键相互引用
这个问题到底是怎么回事?请帮助
EF 中的每个实体都必须是唯一可识别的。EF 使用数据库主键来定义实体键。虽然在某种程度上可以在没有主键的情况下工作,但绝对不推荐它,因为它会导致很多问题。错误中直接提到了核心问题 - 如果表没有主键,则 EF 将其标记为只读,因为它不确定它是否可以唯一标识要更新的记录。
事实上,这只是一个警告,但您将永远无法使用 Save 函数,在我的情况下,对于我坚持工作的设计不佳的 DB,EF 对我来说毫无价值。
在表中定义主键并更新实体数据模型。您可以在打开 EF 模型并右键单击并选择更新后执行此操作。从窗口中选择刷新选项并验证您的模型。
您只需从项目中删除 EDMX 文件。现在移动到您的数据库并向每个表添加主键。之后将新的 EDMX 添加到您的项目中。它会正常工作。并且不要忘记从项目中的配置文件中删除 connectionString 标记。