返回实体框架中模型的一部分

本文关键字:一部分 模型 实体 框架 返回 | 更新日期: 2023-09-27 18:35:28

对不起,我的问题标题不好。

关键是,我有一个模型说model1在 C#.NET 的 Web API 实体框架中定义的。

假设模型具有以下字段

field1field2field3field4field5

Web api 方法返回此模型。我从网络应用程序和安卓应用程序调用 Web api,一切正常,没问题。

问题是,在我的Android应用程序中,我只需要field1,field2和field3。

我想使用相同的模型,但只返回必填字段并忽略其余字段以优化移动设备上的数据消耗。

我有办法做到吗?是的,我可以创建另一个仅包含必填字段的模型model2并将值分配给 model2 并返回它,但我不想创建另一个模型。

不创建另一个模型的原因在我几乎拥有的实时应用程序中47 个字段和各种方法将仅返回这些字段的子集,并且必须返回所有 47 个字段。因此,维护成为一个问题。

希望我的要求有意义,会请求一些帮助。

谢谢。

返回实体框架中模型的一部分

如果不想创建另一个简化模型,则一个选项是让 Web API 控制器操作返回对象类型。

在控制器中的最终返回语句期间,您可以从 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;
 }
}

这可确保减少通过网络发送的数据。 但请注意,您仍将从数据库或任何后端源中提取所有字段。

另一种选择是返回字典无论哪种方式,如果没有强模型2,您都会丢失字段名称的强类型。