1

是否可以在 EF 实体中包含计算字段?例如,假设我有一家商店销售产品,并且产品被分组。

当显示类别列表以供商店管理员编辑时,我希望列出每个类别中的产品数量作为列表的一部分。

在 NHibernate 中,我会使用一个公式,例如

<property name="Products" formula="dbo.Category_NumProducts(id)" />

我不知道 EF 是否有类似的可能。我知道我可以制作一个类别视图并将其映射到第二个实体,但这似乎是错误的,因为它几乎是完全重复的。

编辑:如果这在 EF 中是不可能的,那么实现这一目标的最佳方法是什么?

4

1 回答 1

2

不幸的是,如果您的Category表没有此作为计算列,您将无法在不创建第二个实体的情况下对其进行映射 - 它会导致数据库视图、在 EDMX 中定义查询或在 EDMX 中定义查询视图(但查询视图可能不起作用,因为您需要计算聚合函数)。

编辑:

恕我直言,最简单的解决方案(也是最好的)只是创建一个 ViewModel(一些非映射类)并在 Linq 查询中使用投影:

var query = from c in context.Categories
            where ...
            select new CategoryView {
                Id = c.Id,
                Name = c.Name,
                ...
                Products = c.Products.Count()
            };
于 2012-07-18T09:21:16.050 回答