因此,我们假设我们有一个实体Article
,它具有庞大的底层数据结构。我们需要在客户端上为2目的这篇文章:
有这样的WCF服务方法,产生JSON响应:
Public List<Article> GetArticles(string anId, bool isMinimal)
{
using (var client = new MyApp.Model.MyAppEntities())
{
var articles = new List<Article>();
myObjects = //Linq-magic to get values from db...
if (!isMinimal)
{
//add a huge datastructure from other tables to each of myObjects
// these are vitamins, allergeens, nutrients and so on for some article.
});
}
return articles;
}
}
因此,当isMinimal为true时,整个底层数据结构不会被填充。但是(有些正确,正如方法签名所示),返回整个List<Article>
,并且未填充属性的空值。
我想要实现的是:当isMinimal为true时,让此方法仅返回填充的值,并且“从返回的json中删除剩余的值”。我想创建一个“一般的json响应”(一个字符串?),然后让它返回所需的值,所以将Methods签名更改为这样:
Public List<JSONresponse> GetArticles(string anId, bool isMinimal)
{
using (var client = new MyApp.Model.MyAppEntities())
{
var articles = new List<JSON>();
myObjects = getMyObjectsFromDb();//Linq-magic to get values from db...
//adding the whole datastructe here now...
var articleJSON = articles.toJSON();
if (isMinimal)
{
articleJSON = articleJSON.Select(s => new JSON(){ title: s.title, price: s.price, Id: s.Id});
}
return articleJSON;
}
}
但说实话,我不知道这一般是否可行,所以我对此非常挣扎。
由于在我的许多应用程序中使用了wcfservices,我宁愿不为像ArticleMinimal
之类的Object(DTO)创建另一个方法,因为在任何地方更新服务引用都会产生一些开销。
如果有人可以帮助我,那会很棒!
最诚挚的问候, 多米尼克