我使用ASP.NET 5
/ASP.NET Core
与EF7
/EF Core
“的ConnectionString尚未初始化”错误调用两个不同的版本库
我有一个使用ASP.NET 5的依赖注入下面的仓储类
using Microsoft.Data.Entity;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
namespace MyNamespace
{
public class PersonRepository :IPersonRepository
{
private MyDbContext _db;
public MyRepository(MyDbContext db)
{
_db = db;
}
public async Task<IEnumerable<Person>> Search()
{
var table = from p in _db.Persons
select p;
return await table.ToListAsync();
}
}
public interface IPersonRepository
{
Task<IEnumerable<Person>> Search();
}
}
从我的ASP.NET MVC控制器调用我可以成功调用搜索并获取数据。当我调用另一个存储库中的存储过程的另一个仓库的方法调用该工作库调用之前
public class PersonController : Controller
{
private IPersonRepository _personRepository;
public PersonController (IPersonRepository personRepository){
_personRepository= personRepository;
}
public async Task<IActionResult> PersonAction()
{
var result = await _personRepository.Search();
}
}
然而一些奇怪的情况发生。
存储过程
public async Task<List<sp_GetList_Result>> sp_GetList()
{
const string query = "exec [dbo].[sp_GetList];";
var list = new List<sp_GetList_Result>();
using (var connection = (SqlConnection)_db.Database.GetDbConnection())
{
using (var command = new SqlCommand(query, connection))
{
connection.Open();
using (var reader = await command.ExecuteReaderAsync())
{
while (reader.Read())
{
var row = new sp_GetList_Result();
//populate row
list.Add(row);
}
}
connection.Close();
}
}
return list;
}
操作方法:
public async Task<IActionResult> PersonAction()
{
var list = await _anotherRepository.GetList();
var result = await _personRepository.Search();
}
突然await _personRepository.Search();
抛出一个异常
的InnerException = { “ConnectionString属性尚未初始化。”}
我明确注释掉了connection.Close();
行但它仍然给了我相同的connectiontring属性还没有被初始化的错误信息。
你是我的英雄! –