【问题标题】:Consume WCF Data service in client application throws error在客户端应用程序中使用 WCF 数据服务引发错误
【发布时间】:2011-12-16 00:23:40
【问题描述】:

我正在开发导入存储过程的 WCF 数据服务,如下所示。

    [WebGet]
    public List<GetMTSearchResultTest_Result> GettMTSearchResultTest()
    {
        MediaMarketResearch_PRODEntities ent = new MediaMarketResearch_PRODEntities();
        return ent.GetMTSearchResultTest().ToList();
    }

当我在我的客户端应用程序中使用它时,它显示错误为“封闭类型 MMRClient.MMRServiceReference.GetMTSearchResultTest_Result 没有相应的元素可设置属性。”

如下所示绑定到网格视图时出现此错误。

    DataServiceContext context = new DataServiceContext(new Uri("http://localhost:4131/MMRDataService.svc/"));
    IEnumerable<GetMTSearchResultTest_Result> empResult = context.Execute<GetMTSearchResultTest_Result>(new Uri("http://localhost:4131/MMRDataService.svc/GettMTSearchResultTest"));
    GridView1.DataSource = empResult;
    GridView1.DataBind();

注意:我将此存储过程导入为复杂类型。

请在这方面给我建议。

问候,

杰迪普

【问题讨论】:

    标签: wcf


    【解决方案1】:

    我认为link 可能会对您有所帮助(请参阅所选答案)。

    本质上,解决方案可能是为GetMTSearchResultTest_Result 创建一个部分类并用DataServiceKey 属性装饰它,提供一个不可为空的列作为主键(虽然我不这么认为必须是唯一的)。

    所以你的部分类看起来像:

    [DataServiceKey("YourKeyColumnName")]
    public partial class GetMTSearchResultTest_Result {
    }
    

    如果您只是进行读取,我认为您不需要任何实现。

    希望这可行。如果有问题/疑问,请告诉我,我会相应更新。

    【讨论】:

      【解决方案2】:

      您始终可以对非数据服务进行新的服务引用。那是一个普通的 WCF 服务。您可以简单地让 [ContractOperation] 返回有问题的“复杂类型”的列表,就是这样。

      这样您将拥有两个服务,即原始数据服务和一个新的普通 WCF 服务。但这不应该是这样的问题。您不必将麻烦的“复杂类型”作为实体。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-08-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多