EF Frustration将视图映射到对象

时间:2011-10-09 19:11:40

标签: c# sql-server entity-framework-4.1

我有一个表格,可以保存特定项目的部件号记录,如下所示:

create table ProjectParts
    (
    PartNumber varchar(20) not null,
    ProjectID int not null,
    Description varchar(max) not null,
    primary key nonclustered (PartNumber, ProjectID)
    );

我有一个会从多个地方收集库存信息的视图,但是现在我基本上有一个骨架:

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视图,单击确定。

EF尝试将表中的键作为所有列的组合来划分,但我修复了这一点,因此该对象的键是PartNumberProjectID列。我检查以确保验证,确实如此。

接下来,我在EF UI中的ProjectPart对象和ProjectQuantity对象之间添加1:1关联,然后单击“确定”。现在,当我尝试验证时,我收到消息Error 11008: Association 'ProjectQuantityProjectPart' is not mapped.严重吗?它无法解决这个问题?好的,我选择链接,转到Mapping Details,然后添加ProjectParts表。它在关键关系中添加了表格和网格。我的工作已经完成。我运行验证。

对我来说没有运气。现在我收到错误Error 3021: Problem in mapping fragments starting at line (line number): Each of the following columnes in table ProjectParts is mapped to multiple conceptual side properties。该消息列出了ProjectID和PartNumber列以及它们对我刚刚创建的关联的引用。

好吧,呃!当然有多个参考!它是一个1:1复合键,它必须有多个引用!

这阻止我完成任务。有没有人知道一种简单的方法来解决这个问题,以便在我收集有关项目及其各个部分的数据时收集数量信息?

谢谢!

1 个答案:

答案 0 :(得分:4)