为什么种子方法可以正常工作,但查询不起作用?

时间:2017-01-10 18:51:32

标签: c# asp.net entity-framework

我使用EF来管理我的数据库,我已成功设置数据库,运行迁移,更新数据库,并在MSSQL Studio中检查以确认记录是否存在。

但是,当我尝试对DB运行查询时,调试窗口会打印

  

抛出异常:' System.Data.SqlClient.SqlException'在System.Data.dll

直到看起来呼叫最终超时,才会返回任何内容。

这是我的查询。

public async Task<Feature> GetFeatureById(int id){
   try {return await _dbcontext.Features.FirstAsync(m => m.Id == id); }
   catch (Exception e) {return null;}
}

我也尝试过这种变化:

return await (await _dbcontext.Features.AnyAsync(m => m.Id == id) ?
        _dbcontext.Features.FirstAsync(m => m.Id == id) :
        Task.Run(() => new Feature()));

这种变化:

_dbcontext.Features.SqlQuery(
    String.Format("SELECT * FROM [Features] WHERE {0} = Id", id))
    .FirstAsync();

修改 当我打印出异常消息时,这是来自调试控制台的消息:

  

建立与SQL Server的连接时发生与网络相关或特定于实例的错误。服务器未找到或无法访问。验证实例名称是否正确,以及SQL Server是否配置为允许远程连接。

这增加了我的困惑,因为就像我说的那样,当我运行&#34; Update-Database -StartupProject [projectName]&#34;

时,项目连接到DB就好了

修改 这是app.config中的连接字符串

<add name="Context" connectionString="Data Source=localhost\mssqlserver2008;Initial Catalog=HA_Madmin;Integrated Security=True;MultipleActiveResultSets=True" providerName="System.Data.SqlClient" />

但是当我打印出来时

_dbcontext.Database.Connection.ConnectionString

我看到以下内容:

Data Source=.\SQLEXPRESS;Initial Catalog=Context;Integrated Security=True;MultipleActiveResultSets=True

1 个答案:

答案 0 :(得分:0)

原来问题就在那里,因为我的应用程序在一个应用程序池中运行,其身份与我的数据库连接设置的身份不同。