【发布时间】:2014-05-06 17:11:10
【问题描述】:
我是 WebApi 的新手,所以如果这个问题是业余的,请原谅:我使用 AngularJS 的“$resource”与 WebApi-Controller“BondController”进行通信。这很好用。 我的问题:实体“债券”引用了实体“价格”列表:
public class Bond
{
public int ID { get; set; }
...
public virtual List<Price> Prices { get; set; }
}
我正在寻找一种排除嵌套列表“价格”的方法,例如
[JsonIgnore]
但是,在某些其他情况下,我仍然需要一种方法来检索包含此嵌套列表的债券,例如通过第二个控制器“Bond2”。
我能做什么?
我需要在实体 Bond 之上添加一些 ViewModel 吗? 我可以以某种方式排除控制器本身的价格列表吗:
public IQueryable<Bond> GetBonds()
{
return db.Bonds [ + *some Linq-Magic that excludes the list of Prices*]
}
背景:价格列表可能会变得相当长,Get-Requests 很容易变得 > 1MB。在大多数情况下,价格甚至不需要向用户显示,所以我想将它们从响应中排除。但在一种情况下,他们确实...感谢您的意见!
编辑: 我看到,对于某种 Linq Magic,我需要一种新类型“PricelessBond”
EDIT2 找到了一个使用 DTO here 的好例子,并将使用它。
解决方案是创建一个非持久性 BondDTO 类,该类充当“外壳”,并且仅具有您希望在特定用例中可见的那些属性,然后在 BondDTOController 中转换 BondDTO 的选择=> BondDTO 通过 Linq Lambda Select 表达式。
【问题讨论】:
标签: c# linq asp.net-web-api