[英]OData V3 exclude property
我希望從odata的實體集合中排除特定屬性。
我已經使用.Expand(“ Files”)來檢索該特定集合,它們是數據庫中的文件,我想要文件的所有元數據(例如Name和MimeType),而不是二進制主體本身。
我不允許更改OData服務本身,因此,如果有可能,必須使用odata查詢中的指令來完成。
有什么想法嗎? 提前謝謝。
UPDATE2:Vagif很有幫助,但讓我意識到我沒有完全正確地表達我的問題。 再次:道歉。 實際屬性可以在通過擴展“文件”返回的類中,但是它必須為null。 換句話說:我希望擴展的子記錄具有不填充數據的屬性。
更新:Thx nemesv。 我確實應該更具體一些。 odata服務是使用odata nuget軟件包和Visual Studio(使用c#)構建的。 客戶端使用相同的工具。 但是,服務器使用odata 5.0.1。 客戶端我想要的任何版本,(我認為現在是5.6)。
如果在客戶端使用C#和LINQ,則可以使用Select子句和匿名類型來選擇要包含在有效負載中的屬性,例如:
var結果= 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子句。 它以這種方式工作(但僅適用於一個級別,您無法進一步鏈接它們)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.