我希望通过odata从实体集合中排除特定属性。
我使用.Expand(“Files”)来检索特定的集合,它们是数据库中的文件,我想要文件的所有元数据(如Name和MimeType),而不是二进制体本身。
我不允许更改OData服务本身,所以如果可能的话,必须使用odata查询中的指令来完成。
有什么想法? Thx提前。
UPDATE2:Vagif一直很有帮助,但让我意识到我没有完全正确地说出我的问题。再一次:道歉。实际属性可以在通过展开“文件”返回的类中,但必须为null。换句话说:我希望扩展的子记录具有不填充数据的属性。
更新:Thx nemesv。我确实应该更加具体。使用带有c#的visual studio,使用odata nuget包构建odata服务。客户端使用相同的工具。然而,服务器使用odata 5.0.1。客户端我想要的任何版本,(现在我认为是5.6)。
答案 0 :(得分:0)
如果在客户端使用C#和LINQ,则可以使用Select子句和匿名类型选择要包含在有效负载中的属性,例如:
var results = context.MyCollection.Select(x => new {x.Name,x.Category});
<强>更新强>
从扩展实体中选择列的技巧是您不需要显式扩展它:WCF数据服务LINQ提供程序填写数字。以下是使用Northwind数据模型的示例:
[Test]
public void SelectProductAndCategoryColumns()
{
var result = _context.Products
.Where(x => x.ProductID == 1)
.Select(x => new { x.ProductID, x.Category.CategoryID, x.Category.CategoryName })
.Single();
Assert.AreEqual(1, result.ProductID);
Assert.AreNotEqual(0, result.CategoryID);
Assert.IsNotNull(0, result.CategoryName);
}
请注意,我在Select子句中链接扩展列而不使用Expand子句。它以这种方式工作(但只有一个级别,你不能进一步链接它们。)