找不到WCF DataService EF实体

时间:2010-12-02 16:36:16

标签: c#-4.0 wcf-data-services

我有一个带有生成上下文的EDMX模型。 现在我生成了一个自我跟踪实体库是一个单独的项目,并从EDMX模型中引用它。 还要将上下文中的正确名称空间设置为与实体相同的名称空间。

现在使用这一切都有效,除非我尝试使用此上下文创建WCF数据服务。

所以只需创建新的ObjectContext并直接使用它就可以了。

但是在引用上下文+模型库和实体lib时,我在加载服务时遇到以下错误

服务器在处理请求时遇到错误。异常消息为'Value cannot be null. Parameter name: key'. See server logs for more details. The exception stack trace is:

现在我发现当使用外部实体lib的数据服务并且修复覆盖createcontext时可能会发生这种情况

代码

收起

System.Data.Metadata.Edm.ItemCollection itemCollection;
        if (!context.MetadataWorkspace.TryGetItemCollection
              (System.Data.Metadata.Edm.DataSpace.CSSpace, out itemCollection))
        {
            var tracestring = context.CreateQuery<ClientDataStoreContainer>("ClientDataStoreContainer.DataSet").ToTraceString();
        }
        return context;

现在错误已经消失,但我得到了下一个错误,那就是: Object mapping could not be found for Type with identity 'ClientDataStoreEntities.Data'. 此错误发生在createcontext

中的.toTraceString

ssdl文件具有已定义的类型 崩

<EntitySetMapping Name="DataSet">
    <EntityTypeMapping TypeName="IsTypeOf(ClientDataStoreEntities.Data)">

因此必须加载ClientDataStoreEntities.Data类型,这是我从模型生成的STE库的名称空间和类型。

编辑:带

var tracestring = context.CreateQuery<Data>("ClientDataStoreContainer.DataSet").ToTraceString();

它似乎加载所有类型,但是现在服务没有我可以调用的任何方法。 应该有2个DataSet和PublishedDataSet但是:

<service xml:base="http://localhost:1377/WcfDataService1.svc/">
−
<workspace>
<atom:title>Default</atom:title>
</workspace>
</service> 

是我得到的。

1 个答案:

答案 0 :(得分:0)

我遇到了同样的问题(你提到的第一个问题)。我已经在这个帖子中使用了Julie Lerman的建议。另一个建议对我没有用,虽然我会更多地尝试它们,因为Julie的解决方案可能会有性能影响,因为它为每个查询执行(并且有一些成本)。

MSDN Fail to work with POCO ModelContainer which entities are located in other assembly

编辑:对不起,刚刚意识到您使用了此主题中提到的其他解决方案。