具有读存储过程的实体框架
本文关键字:实体 框架 存储过程 | 更新日期: 2023-09-27 18:08:28
我在一个项目中使用EF 6,我是EF的新手。对于这个特定的项目,我们尽可能地使用了现有的数据库和存储过程。我有一个存储过程,它引入了比模型更多的数据列。我们已经解决了使用该存储过程的问题,但是现在它返回的数据又被请求了。我不确定最好的方法来实现这一点,所以我转向这里寻求帮助。
这是我的存储过程:
CREATE Procedure dbo.procGetMainInvoices
@Division CHAR(5),
@CustNum CHAR(6)
AS
SELECT i.InvoiceNumber,
i.Division,
i.CustomerNumber,
i.InvoiceType,
i.InvoiceDate,
i.DueDate,
i.AmountDue,
(SELECT COUNT(trn.InvoiceNumber)
FROM Invoice trn
WHERE trn.InvoiceNumber = i.InvoiceNumber
AND trn.Division = i.Division
AND trn.CustomerNumber = i.CustomerNumber) as TransactionCount
FROM Invoice i
WHERE i.Division = @Division
AND i.CustomerNumber = @CustNum
AND i.InvoiceStatus = 'O'
AND i.ItemSequence = 0
AND i.ItemLine = 0
ORDER BY i.InvoiceDate,
i.InvoiceNumber
可以看到,选择的最后一列是一个计数。我需要将这些数据添加到我现有的发票模型中。我需要高效地完成它,因为我可以一次读取数百或数千条记录。
我通过将存储过程转换为视图来实现这一点。然后将我的DBContext绑定到视图。我必须创建一个包含视图中的字段的新模型,但它确实为我提供了所需的灵活性,使我能够像过滤存储过程那样过滤结果。