自定义工具错误:指定的架构无效。错误:(0,0):错误0111:从属角色引用的属性

时间:2013-03-12 20:24:12

标签: .net wcf odata .net-4.5

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

  

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

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

2 个答案:

答案 0 :(得分:1)

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

2.0 EDMX designer xmlns:edmx =“http://schemas.microsoft.com/ado/2008/10/edmx” WCF服务$ metadata - xmlns =“http://schemas.microsoft.com/ado/2008/09/edm”

3.0 EDMX designer - 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 Data Services作为2007年降级版本发布。

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

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

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

答案 1 :(得分:0)

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

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

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

当我发现.Net 4.5在Windows Server 2003上不起作用并且必须降级到4.0&另一次从.net 3.5升级到.net 4.0。我确实需要重新创建模型。使用EF 4.4而不是5.0来自.Net 4.5

此问题有更多帖子herehere