2

我刚刚升级到 .net 4.5 去更新我的 WCF 客户端项目中的 OData 服务参考,我得到了这个自定义工具错误:

指定的架构无效。错误:(0,0) :error 0111:: 依赖角色 Bill 引用的属性必须是关系 BillingEntities.FK_Bill_Batch_BatchId 的引用约束中的依赖角色引用的 EntityType BillingEntities.Bill 的键的子集。

关于如何解决这个问题的任何想法?

4

2 回答 2

1

我很确定这是 WCF 数据服务而不是实体框架的问题。我在我的环境中复制了这个。我发现 EDMX CSDL 命名空间在版本之间是不同的。

2.0 EDMX 设计器 xmlns:edmx="http://schemas.microsoft.com/ado/2008/10/edmx" WCF 服务 $metadata - xmlns="http://schemas.microsoft.com/ado/2008/09/电火花"

3.0 EDMX 设计器 - xmlns:edmx="http://schemas.microsoft.com/ado/2009/11/edmx" WCF 服务 $metadata - xmlns="http://schemas.microsoft.com/ado/2007/05 /edm"

如您所见,3.0 定义了一个比 2.0 明显更新的 edm 版本,但由 WCF 数据服务作为 2007 年的降级版本发布。

我的结论是 GAC 4.5 中附带的 System.Data.Services.dll 存在支持此问题的问题。由于 WCF 数据服务从 4.5 开始分拆为 NuGet,因此我将切换到此版本。我在我的环境中尝试过这个,服务发布的 CSDL 是正确的,并且可以被我的服务客户端使用。

如果无法升级,则必须使用 4.0 中的 EDMX 设计器或在幕后手动切换这些标签,这就是我最初的工作方式。

http://msdn.microsoft.com/en-us/data/ee720179

于 2013-04-03T20:23:12.660 回答
0

这很可能与使用与 .Net 4.5 中现在可用的不同版本的实体框架构建的模型有关。这本身不是问题,但它可能意味着实体关联可能没有创建外键属性。

您从哪个版本的框架升级?

您可以选择从头开始删除并重新创建模型(取决于复杂性),或者您可以从现有数据库重新创建模型,特别注意关联。

当我发现 .Net 4.5 不能在 Windows Server 2003 上运行并且不得不降级到 4.0 并且再次从 .net 3.5 升级到 .net 4.0 时,我遇到了类似的情况。我确实不得不重新创建模型。使用 EF 4.4 而不是从 .Net 4.5 获得的 5.0

这里这里有更多关于这个问题的帖子

于 2013-03-27T16:27:15.743 回答