我有一个表,其中保存特定项目的零件号记录,如下所示:
create table ProjectParts
(
PartNumber varchar(20) not null,
ProjectID int not null,
Description varchar(max) not null,
primary key nonclustered (PartNumber, ProjectID)
);
我有一个将从多个地方收集库存信息的 View ,但现在我基本上有了一个框架:
create view ProjectQuantities as
select distinct
pp.PartNumber,
pp.ProjectID,
0 as QtyOnHand,
0 as QtyOnOrder,
0 as QtyCommitted
from
ProjectParts pp;
到目前为止,一切都很好。我进入 Visual Studio 中的 EF 设计器(我已经有一个使用 ProjectParts 表的对象模型)并从数据库更新模型。我选择 ProjectQuantities View ,单击“确定”。
EF 尝试将表上的键预测为所有列的组合,但我修复了该问题,因此对象的键是 PartNumber
和 ProjectID
列。我检查以确保这是有效的,而且确实如此。
接下来,我在 EF UI 中的 ProjectPart 对象和 ProjectQuantity 对象之间添加 1:1 关联,然后单击“确定”。现在,当我尝试验证时,我收到消息错误 11008:关联“ProjectQuantityProjectPart”未映射。
认真的吗?这事还想不通吗?好的,我选择该链接,转到“映射详细信息”,然后添加“ProjectParts”表。它添加了两个表并网格化了关键关系。我的工作完成了。我运行验证。
我没有运气。现在,我收到错误错误 3021:从行(行号)开始映射片段时出现问题:表 ProjectParts 中的以下每一列都映射到多个概念性侧面属性
。该消息列出了 ProjectID 和 PartNumber 列以及它们对我刚刚创建的关联的引用。
嗯嗯!当然有多个引用!这是一个 1:1 复合键,它必须有多个引用!
这阻碍了我完成工作。有谁知道解决此问题的简单方法,以便我在收集有关项目及其组成部分的数据时可以收集数量信息?
谢谢!
最佳答案
您可能会发现这篇文章很有用 http://blogs.u2u.be/diederik/post/2011/01/31/Building-an-Entity-Framework-40-model-on-views-practical-tips.aspx
关于c# - EF 失败将 View 映射到对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7705863/