实体框架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()
}
在您的edmx文件所在的项目中,创建一个新的partial
class
:
public partial class Customer {}
你可以添加你自己的属性/方法到EF实体:
public partial class Customer {
public int GetSomething(){}
}
No。实体仅从数据库中检索表本身中的字段。为此,您必须执行投影(如您所示)或使用自定义数据检索(如@Jason所示)。
对自定义视图模型的投影在这种情况下是正确的解决方案,因为您想要显示一些不属于您的实体的额外数据。
您可以在数据库中创建视图,将其映射为您的实体,并使用触发器来处理CRUD操作。