0

我正在 ASP.net 中开发一个 API Web 项目,并且在几个 stackoverflow 用户的推荐下,我决定使用 EntityFramework。

处理已经创建并形成的具有所有关系的数据库。我已经生成了所有相应的实体,并执行了第一个 sql,以获得一个小示例 ql,它将返回给定表的所有数据。

但是当我得到查询并执行它时,我得到了错误 3002,描述如下:

错误 3002:从第 12441 行开始映射片段时出现问题:表 propuestaMarca 的键(propuestaMarca.marca、propuestaMarca.propuesta)的潜在运行时违规:列(propuestaMarca.propuesta、propuestaMarca.marca)映射到 EntitySet propuestaMarca 的属性(propuestaMarca.propuesta。 cod_propuesta、propuestaMarca.marca.cod_marca)在概念方面,但它们不构成 EntitySet 的关键属性(propuestaMarca.marca.cod_marca、propuestaMarca.propuesta.cod_propuesta、propuestaMarca.propuesta.empresa)。

当我查看 .emdx 模型时,我看到以下内容:

在此处输入图像描述

模型中不存在表 propuestaMarca。未正确导出

在此处输入图像描述

当我查看 .emdx 模型时,我看到以下内容:

模型中不存在建议的 tableBrand。它没有正确导出。

我搜索了有关错误 3002 的信息,发现从两个表中的一个表中删除某个主键可以解决问题,并试图消除 propuesta 表中的主 Empleado 键,但没有成功。 在此处输入图像描述

4

1 回答 1

0

当主键由多个属性(复合键)组合而成时,也会出现此错误。看起来您在 propuesta 表中有两个“键”。

从上面的错误消息:

( propuestaMarca.propuesta, propuestaMarca.marca ) -> 2 列

映射到 EntitySet propuestaMarca 的属性

( propuestaMarca.propuesta.cod_propuesta, propuestaMarca.marca.cod_marca ) -> 2 列

在概念方面,但它们不构成 EntitySet 的关键属性

propuestaMarca.marca.cod_marca、propuestaMarca.propuesta.cod_propuesta、propuestaMarca.propuesta.empresa)。-> 3 列

所以我认为你应该检查映射。

于 2019-10-11T08:58:49.500 回答