OData $元数据错误

时间:2013-10-16 13:34:35

标签: entity-framework metadata odata wcf-data-services

我有一个WCF数据服务(5.5)坐在EF(5.0)模型上, 当我查询$ metadata时,我收到以下错误:

“发现IEdmModel实例验证失败。报告了以下错误: InvalidMultiplicityOfDependentEnd:从属结尾'QuestionsetMember'的多样性无效。因为依赖属性不表示从属结束键,所以从属结尾的多样性必须为'*'。“

QuestionsetMember有一个2列的复合主键,每个列都挂钩到另一个表的主键,即从键的每一列到两个表的主键都存在一个外键。

我已搜索但无法找到有关“InvalidMultiplicityOfDependentEnd”的任何信息。 还试图摆弄EDMX中的关系,但更改End Multiplicity会导致错误,导致模型无法编译。

任何想法如何绕过这个(希望不改变我的架构)?

1 个答案:

答案 0 :(得分:0)

这似乎是一个非常罕见的错误。我没有在其他任何地方找到该错误的解释。所以我在检查了每个约束和两个表中的每一列之后找到了解决方案。令我惊讶的是,主键列的顺序似乎是相关的。

解释:我在sql server management studion中进行数据库设计,并使用实体框架设计器更新我的模型。

第一张表:

CREATE TABLE Table1
(
Column1 int NOT NULL,
Column2 int NOT NULL,
PRIMARY KEY (Column1,Column2)
)

第二张表:

CREATE TABLE Table2
(
Column1 int NOT NULL,
Column2 int NOT NULL,
PRIMARY KEY (Column1,Column2)
FOREIGN KEY (Column1,Column2) REFERENCES Table1(Column1,Column2)
)

这样可行。但它不起作用,如果您要以另一个顺序在第二个表中定义主键的列:

CREATE TABLE Table2
(
-- Changed order in definition:
Column1 int NOT NULL,
Column2 int NOT NULL,
-- Changed order in PK group:
PRIMARY KEY (Column2,Column1)
-- Leave the FK definition untouched:
FOREIGN KEY (Column1,Column2) REFERENCES Table1(Column1,Column2)
)

我认为列定义的顺序会对生成的模型产生影响。此顺序可能会对IEdmModel类中的模型验证产生影响。谁知道......