我正在尝试使用WPF和实体框架的数据绑定。
将数据源添加到我的项目后,我保存了我的项目,以便在完成所有工作之前查看一切是否正常。
但我有11条警告/信息说明:
表/视图'MyDataBase.TableName'没有定义主键。已推断密钥,并将定义创建为只读表/视图。
我有14个表,其中4个表有自己的主键,其他表使用外键相互引用
这个问题到底是什么? 请帮助
答案 0 :(得分:4)
EF中的每个实体都必须是唯一可识别的。 EF使用数据库主键来定义实体键。虽然在某种程度上可以在没有主键的情况下工作,但最终不建议这样做,因为它会导致许多问题。核心问题直接在错误中提到 - 如果表没有主键,EF会将其标记为只读,因为它不确定它是否可以唯一标识要更新的记录。
答案 1 :(得分:2)
确实这只是一个警告,但你永远无法使用保存功能,在我的情况下,对于设计糟糕的DB,我不会对我毫无价值。
答案 2 :(得分:2)
在表中定义主键并更新实体数据模型。您可以在打开EF模型后右键单击并选择更新。从窗口中选择刷新选项并验证您的模型。
答案 3 :(得分:0)
您只需从项目中删除EDMX文件即可。现在移动到您的数据库并向每个表添加主键。之后,在项目中添加新的EDMX。它会工作正常。并且不要忘记从项目中的配置文件中删除connectionString标记。