C# 实体框架4:如何扩展实体?

C# 实体框架4:如何扩展实体?,c#,.net,entity-framework,C#,.net,Entity Framework,我已将数据库表导入到.edmx文件中,其中我有一个客户实体,如: CustID CustName CustAddress 现在,我想允许用户编辑所选客户,并且我需要显示每个客户拥有的订单数量,因此在显示编辑表单时,我需要向该实体动态添加一个字段-fieldcustomordercount,该字段将从CustomerID={id}的订单中计算sql语句SELECT COUNT(*) 是否有办法扩展实体,以便通过EF选择订单计数,而无需手动执行如下自定义选择: .Select(c => ne

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

CustID
CustName
CustAddress
现在,我想允许用户编辑所选客户,并且我需要显示每个客户拥有的订单数量,因此在显示编辑表单时,我需要向该实体动态添加一个字段-field
customordercount
,该字段将从CustomerID={id}的订单中计算sql语句
SELECT COUNT(*)

是否有办法扩展实体,以便通过EF选择订单计数,而无需手动执行如下自定义选择:

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

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

public partial class Customer {}
然后,您可以将自己的属性/方法添加到EF实体:

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

否。实体仅从数据库检索表本身中的字段。为此,您必须按照所示进行投影,或者使用@Jason所示的自定义数据检索


在这种情况下,投影到自定义视图模型是正确的解决方案,因为您希望显示一些不属于实体的附加数据。

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