返回实体框架中模型的一部分
本文关键字:一部分 模型 实体 框架 返回 | 更新日期: 2023-09-27 18:35:28
对不起,我的问题标题不好。
关键是,我有一个模型说model1
在 C#.NET 的 Web API 实体框架中定义的。
假设模型具有以下字段
field1
, field2
, field3
, field4
, field5
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,您都会丢失字段名称的强类型。