Entity framework 从WCF调用实体框架时超时

Entity framework 从WCF调用实体框架时超时,entity-framework,Entity Framework,我有一个.NET项目,包括以下内容: WCF网络服务 实体框架数据层 下面描述的最终问题是用户表。架构中的用户表如下所示: 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]

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

  • WCF网络服务
  • 实体框架数据层
  • 下面描述的最终问题是用户表。架构中的用户表如下所示:

    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
    )
    
    如果对包含3条记录的用户表运行查询,它将在不到一秒钟的时间内执行

    我正在一个名为User.Validate()的方法中对实体框架运行以下查询

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

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

    在实体框架的掩护下,下面的查询是在查询超时时运行的查询。如果我运行查询,它将在不到一秒钟内执行。是什么原因导致此超时

    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'
    

    您是否已正确配置WCF服务的连接字符串?在不编写单元测试的情况下,尝试执行集成测试以检查它是否工作?是否启用了延迟加载?这可能是WCF服务的序列化问题。请尝试禁用它。@Jayantha服务的连接字符串与单元测试项目中的连接字符串相同。在服务中,如果我要对另一个表执行EF查询,它会工作。要添加的一件事是,我将WCF服务转换为SOAP ASMX web服务,并且遇到了相同的问题。我没有启用延迟加载。我也有同样的问题。我在其他论坛上看到一些回复,说要在数据库上运行
    exec sp_updatestats
    ,但这似乎并没有阻止问题的发生。
    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'