这是我的 WebAPI 的一部分,我无法将这些数据从 Linq 中提取到实体到我的 Datacontract 对象中。我将向调用者返回一个自定义数据类型,无论他们想要 XML 还是 JSON,我不在乎,我只是将它交给 WebAPI 来处理它。
我在 C# 中使用 VS2013 和 EF5、ASP.NET 4.5
结构如下:
产品分类
ID
CategoryName
(a million other things)
List<Products>
产品
ID
ProductName
(a million other things)
Category
我已经设置了一个如下所示的 DataContract:
产品类别数据合同
ProductCategoryId
ProductCategoryName
List<ProductDataContract> Products
产品数据合同
ProductName
基本上,我想获得一个 Linq 查询来返回所有类别,并在其中返回所有产品。
from prodcat in context.ProductCategories order by prodcat.ItemOrder
select new ProductCategoryDataContract
{
ProductCategoryId = prodcat.Id
Products = prodcat.Products // this obviously fails as ProductDataContract != Products
}
如果我尝试
Products = new List<ProductDataContract> { //initializer stuff }
我没有任何我认为我会拥有的智能感知事物(ProductName 等),因为我猜我在列表中。
基本上,我已经建立了所有关系,并且可以直接在 EF 中获取所有内容,但是因为我将这些内容放入新的数据合同中,这让我有点悲伤(主要是由于我缺乏 linq 知识)。
我的问题是:1.)我该怎么做
和 2.) 我怎样才能以最少的数据库命中来做到这一点。我可能会在数十个产品组中推出数千个产品。
非常感谢,如果我有什么不清楚的地方,请lmk。而且,上面是伪代码,不是真正的交易,所以如果我犯了愚蠢的命名错误,那不太可能是“它”:)