具有EF复杂类型的WCF数据服务

时间:2013-03-26 01:24:52

标签: entity-framework-5 wcf-data-services

我正在玩EF5和数据服务。决定测试暴露SP。将其映射到FirmInfo复杂类型。在这个愚蠢的错误中运行。似乎无法弄明白。

我为我创建了这个复杂的.tt模板

public partial class FirmInfo
{
    public int FirmID { get; set; }
    public string Name { get; set; }
}

我添加了这个以将其暴露给MyDataService.svc.cs类:

[WebGet]
public IQueryable<FirmInfo> pSPTest(int id)
{
    return CurrentDataSource.pSPTest(id).AsQueryable();
}

我可以在浏览器中看到它:

- <pSPTest xmlns="http://schemas.microsoft.com/ado/2007/08/dataservices" xmlns:m="http://schemas.microsoft.com/ado/2007/08/dataservices/metadata">
- <element m:type="DB.FirmInfo">
    <FirmID m:type="Edm.Int32">1</FirmID> 
    <Name>Firm Name</Name> 
  </element>
  </pSPTest>

但是在使用c#客户端应用程序时,我不断收到此错误: “Client.ServiceReference.FirmInfo”类型中不存在属性“element”。确保仅使用由类型定义的属性名称。

任何帮助表示赞赏

2 个答案:

答案 0 :(得分:0)

您如何使用C#客户端应用程序消耗结果?如果您正在使用WCF数据服务客户端,则应该在Execute<T>()上调用DataServiceContext

有关如何使用WC Data Services客户端调用服务操作的指导,请查看此文档:http://msdn.microsoft.com/en-us/library/hh230677.aspx

答案 1 :(得分:0)

您也可以通过将操作结果声明为您期望的集合类型来实现此目的。

var query = context.CreateQuery<ObservableCollection<wsAccountView.organisation>>("GetOrganisationsByUserName").AddQueryOption("UserName", @"'SFN\AO'");
var Organisations = query.ToList();