【问题标题】:WCF DataService EF entities not found未找到 WCF DataService EF 实体
【发布时间】:2010-12-02 16:36:16
【问题描述】:

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

除了我尝试使用此上下文创建 WCF 数据服务时,现在一切正常。

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

但是在引用了上下文 + 模型库和实体库后,加载服务时出现以下错误

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

现在我发现当使用带有外部实体库的数据服务和修复覆盖 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> 

是我得到的。

【问题讨论】:

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


    【解决方案1】:

    我遇到了同样的问题(你提到的第一个问题)。我在这个线程中使用了 Julie Lerman 的建议。另一个建议对我不起作用,尽管我会更多地尝试它们,因为 Julie 的解决方案可能会对性能产生影响,因为它会针对每个查询执行(并且有一些成本)。

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

    编辑:抱歉,刚刚意识到您使用了此线程中提到的其他解决方案。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-10-28
      • 1970-01-01
      • 2010-09-29
      • 1970-01-01
      • 2013-03-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多