小编Kob*_*bie的帖子

运行存储过程时的实体框架问题

我有存储过程和实体框架的问题.

让我解释一下正在发生的事情......以及迄今为止我所尝试过的事情.

我有一个存储过程,它没有做太多

SELECT 
    COUNT(DISTINCT(EmailAddress)) AcceptedQuotes, 
    CONVERT (DATE,QuoteDate) QuoteDate
FROM
    Quote Q
JOIN 
    Person P on Q.PersonPk = P.Pk
JOIN 
    Product Pr on Q.ProductPk = Pr.Pk
JOIN 
    Accepted A on Q.Pk = A.QuotePk
WHERE               
    QuoteDate between @startDate and @endDate
    AND CompanyPk = @companyPk
    AND FirstName != 'Test'
    AND FirstName != 'test'
    AND FirstName != 'EOH'
Run Code Online (Sandbox Code Playgroud)

我想执行此操作,它在SSMS中工作正常,甚至不需要1秒钟.

现在,我将其导入Entity Framework,它超时并将命令超时设置为120 ...

那么我到目前为止所尝试的以及我测试的内容.

如果我使用SqlCommand,SqlDataAdapter,DataTable方式,用我自己的连接字符串,它按预期执行.当我在这种情况下使用Entity Framework连接字符串时,它会超时.

我改变了我的存储过程以包含"重新编译"选项并尝试了SET ARITHABORT方法,没有运气,它在通过EF运行时超时.

这是EF中的一个错误吗?

我现在刚刚决定使用"旧学校"数据访问来重写它.

另请注意,EF对来自同一数据库的其他存储过程执行正常.

任何想法或帮助将不胜感激......

PS.我找到了这篇文章,但也没有帮助:(

http://www.sommarskog.se/query-plan-mysteries.html

c# sql-server stored-procedures entity-framework

8
推荐指数
1
解决办法
1044
查看次数