具有读存储过程的实体框架

时间:2015-08-18 16:32:19

标签: c# entity-framework stored-procedures

我正在使用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

如您所见,选择的最后一列是计数。我需要将这些数据添加到我现有的发票模型中。我需要它有效地完成,因为我可以一次读取数百或数千条记录。

1 个答案:

答案 0 :(得分:0)

我通过将存储过程转换为视图来实现此目的。然后将我的DBContext绑定到视图。我必须创建一个包含视图中字段的新模型,但它确实给了我灵活性,我需要能够将结果过滤到与存储过程相同的程度。