实体框架,计算实体字段

时间:2012-07-18 05:45:37

标签: entity-framework entity-framework-4

是否可以在EF实体中包含计算字段?例如,假设我有一个销售产品的商店,产品按类别分组。

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

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

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

如果EF可能出现类似情况,我无法解决。我知道我可以创建一个类别视图并将其映射到第二个实体,但这似乎是错误的,因为它几乎完全重复。

编辑:如果在EF中无法做到这一点,那么实现这一目标的最佳方法是什么?

1 个答案:

答案 0 :(得分: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()
            };