实体框架4:如何扩展实体

本文关键字:实体 扩展 框架 何扩展 | 更新日期: 2023-09-27 18:11:21

我已经将数据库表导入.edmx文件,其中我有一个Customer实体,如:

CustID
CustName
CustAddress

现在我想允许用户编辑选中的客户,我需要显示每个客户的订单数量,所以在显示编辑表单时,我需要动态地向这个实体添加一个字段-字段CustOrderCount,它将计算sql语句SELECT COUNT(*) FROM Orders WHERE CustomerID = {id}

是否有一种方法以某种方式扩展实体,以便EF 选择订单计数,而无需手动执行自定义选择,如:

.Select(c => new CustomerExtended 
{ 
    CustID = c.CustID, 
    ... 
    CustOrderCount = db.Orders.Where(o => o.OrderCustID = c.CustID).Count()
}  

实体框架4:如何扩展实体

在您的edmx文件所在的项目中,创建一个新的partial class:

public partial class Customer {}

你可以添加你自己的属性/方法到EF实体:

public partial class Customer {
   public int GetSomething(){}
}

No。实体仅从数据库中检索表本身中的字段。为此,您必须执行投影(如您所示)或使用自定义数据检索(如@Jason所示)。

对自定义视图模型的投影在这种情况下是正确的解决方案,因为您想要显示一些不属于您的实体的额外数据。

您可以在数据库中创建视图,将其映射为您的实体,并使用触发器来处理CRUD操作。