簡體   English   中英

在實體框架中返回模型的一部分

[英]Returning a part of model in entity framework

抱歉,我的題目不好。

關鍵是,我有一個模型,說是在C#.NET的Web API實體框架中定義的model1

說模型有以下幾個領域

field1field2field3field4field5

Web api方法返回此模型。 我從網絡應用程序和Android應用程序調用網絡api,一切正常,沒有問題。

問題是,在我的android應用程序中,我只需要field1,field2和field3。

我想使用相同的模型,但僅返回必填字段,而忽略其余字段以優化移動設備上的數據消耗。

我有辦法嗎? 是的,我可以僅使用必填字段創建另一個模型model2 ,並將值分配給model2並返回它,但是我不想創建另一個模型。

不創建另一個模型的原因是在實時應用程序中,我有將近47個字段,各種方法將僅返回這些字段的子集,而其中一個必須返回所有47個字段。 因此,維護成為一個問題。

希望我有我的要求,請尋求幫助。

謝謝。

如果您不想創建另一個簡化模型,那么一個選項是讓您的Web api控制器操作返回對象類型。

在控制器的最終return語句中,您可以只對model1類進行匿名投影,然后僅返回所選字段。

public class MyController : ApiController
{
 public object SomeGetAction()
 {
   var model1 = GetModel1();

   if (android)
   {
    // send back partial payload
    return new { field1 = model1.field1, field3 = model1.field3 }; 
   }

   // for clients needing full payload.
   return model1;
 }
}

這樣可以確保減少您通過網絡發送的數據。 但請注意,您仍將從數據庫或后端源中提取所有字段。

另一種選擇是以任何一種方式返回Dictionary,您將失去字段名稱的強類型輸入,而沒有強大的model2。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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