没有DataServiceKey属性的OData DataServiceContext查询

时间:2014-06-25 14:47:43

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

在服务器端,我有一个Entity Framework DbContext NorthwindContext和一个System.Data.DataService<NorthwindContext>

我的客户需要查询dataservice。我可以用

来检索数据
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工具链进行客户端代理/类生成,但创建了我自己的&#34; copy&#34;看起来像这样的订单类

[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属性装饰我的类?

2 个答案:

答案 0 :(得分:0)

您无法从声明的实体中删除DataServiceKey。

•实体键 - 作为实体类型的每个数据类必须具有键属性。此属性归因于DataServiceKeyAttribute属性([DataServiceKeyAttribute])。

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

此致 Kajal

答案 1 :(得分:0)

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