从WCF调用时的实体框架超时

时间:2012-11-02 23:00:30

标签: entity-framework

我有一个.NET项目,包含以下内容:

  1. WCF网络服务
  2. 实体框架数据层
  3. 下面描述的最终问题是User表。用户表的架构如下:

    CREATE TABLE [dbo].[User](
        [Id] [int] IDENTITY(1,1) NOT NULL PRIMARY KEY CLUSTERED,
        [FirstName] [varchar](50) NOT NULL,
        [LastName] [varchar](50) NOT NULL,
        [Email] [varchar](50) NOT NULL,
        [Username] [varchar](50) NOT NULL,
        [Password] [varchar](250) NOT NULL,
        [AuthenticationKey] [uniqueidentifier] NULL,
        [Active] [bit] NOT NULL DEFAULT (1),
        [Admin] [bit] NOT NULL DEFAULT (0),
        [AutoSubmit] [bit] NOT NULL DEFAULT(0))
    
    CREATE UNIQUE NONCLUSTERED INDEX [IX_User] ON [dbo].[User] 
    (
            [Username] ASC
    )
    

    如果我对User表运行一个包含3条记录的查询,它会在不到一秒的时间内执行。

    我在一个名为User.Validate()的方法中对Entity Framework运行以下查询。

    database.User.Where(user => user.Username == userName && user.Active).SingleOrDefault()
    

    从单元测试调用时,上面的代码执行正常。但是,从WCF Web服务从该方法调用时,会发生以下异常:

    System.ServiceModel.FaultException:System.Web.Services.Protocols.SoapException:服务器无法处理请求。 ---> System.Data.EntityCommandExecutionException:执行命令定义时发生错误。有关详细信息,请参阅内部异常---> System.Data.SqlClient.SqlException:超时已过期。操作完成之前经过的超时时间或服务器没有响应。 ---> System.ComponentModel.Win32Exception:等待操作超时

    在Entity Framework的封面下,以下查询是查询超时时运行的内容。如果我运行查询,它会在不到一秒的时间内执行。可能导致此超时的原因是什么?

    exec sp_executesql N'SELECT TOP (2) 
    [Extent1].[Id] AS [Id], 
    [Extent1].[FirstName] AS [FirstName], 
    [Extent1].[LastName] AS [LastName], 
    [Extent1].[Email] AS [Email], 
    [Extent1].[Username] AS [Username], 
    [Extent1].[Password] AS [Password], 
    [Extent1].[AuthenticationKey] AS [AuthenticationKey], 
    [Extent1].[Active] AS [Active], 
    [Extent1].[Admin] AS [Admin], 
    [Extent1].[AutoSubmit] AS [AutoSubmit]
    FROM [dbo].[User] AS [Extent1]
    WHERE [Extent1].[Username] = @p__linq__0',N'@p__linq__0 varchar(8000)',@p__linq__0='test1'
    

0 个答案:

没有答案