簡體   English   中英

OData V3排除屬性

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM