【问题标题】:OData DataServiceContext query without DataServiceKey attribute没有 DataServiceKey 属性的 OData DataServiceContext 查询
【发布时间】:2014-06-25 14:47:43
【问题描述】:

在服务器端,我有一个实体框架 DbContext NorthwindContext 和一个 System.Data.DataService<NorthwindContext>

我的客户需要查询数据服务。我可以使用

检索数据
var uriString = "http://localhost:8888/northwind.svc";
var context = new DataServiceContext(new Uri(uriString));
var query = context.CreateQuery<orders>("orders");
var result = query.ToList();

好的,到目前为止这有效。我不使用 Visual Studio 工具链来生成客户端代理/类,而是创建自己的订单类“副本”,如下所示

[DataServiceKey("OrderID")]
public partial class orders
{
    public int OrderID { get; set; }
    public string CustomerID { get; set; }
    ...
}

这仅适用于我指定了 DataServiceKey 属性。如果我不这样做,我会收到 DataServiceQueryException

DataServiceKey 来自Microsoft.Data.Service.Client,我的主程序集引用了我的模型orders 在一个单独的程序集中,我不想引用Microsoft.Data.Service.Client

是否可以使用我的查询而不需要用DataServiceKey 属性装饰我的班级?

【问题讨论】:

    标签: c# .net entity-framework odata wcf-data-services


    【解决方案1】:

    您不能从您声明的实体中删除 DataServiceKey。

    •实体键- 作为实体类型的每个数据类都必须具有键属性。此属性由 DataServiceKeyAttribute 属性 ([DataServiceKeyAttribute]) 赋予属性。

    链接: http://msdn.microsoft.com/en-us/library/dd723653(v=vs.113).aspx

    问候 卡哈尔

    【讨论】:

      【解决方案2】:

      在为 OData 创建您自己的数据模型时,可以使用备用数据注释。 请参阅System.ComponentModel.DataAnnotations 和(取决于框架版本)System.ComponentModel.DataAnnotations.Schema。但是,我在使用 DbContext 创建 WCF 数据服务时使用了这些,而不是 DataServiceContext 用于底层模型。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2023-04-03
        • 1970-01-01
        • 2018-08-18
        • 1970-01-01
        • 1970-01-01
        • 2016-02-15
        • 1970-01-01
        相关资源
        最近更新 更多