0
我有点像junio程序员,所以我需要了解这一点。我正在使用EntityFramework 5.我们有一个存储库类实现,它继承了DbContext。当调用FirstOrDefault方法时,如果没有要返回的值,则EntityFramework关闭连接。这使代码刹车,抱怨dbContext.Database.Connection.ServerVersion为空。事实上,连接状态是“关闭”。我实际上是在不使用Ninject之类的情况下注入存储库来测试服务。这是为什么发生这种情况?EntityFramework DBContext FirstOrDefault关闭连接
这是我注入库:
IRepository<stock_queues> repo = new DbContextRepositoryEcom<stock_queues>(new DbContextFactory<eComEntities>(new eComEntities()));
StockFlashService service = new StockFlashService(repo, new PartsService(), new UserService());
service.AddToStockFlashQueue("asfsdfgvsdf");
,这是我acotually运行的代码(在不同的项目):
public StockFlashService(IRepository<stock_queues> queues, IPartsService parts, IUserService users)
{
this._QueuesRepo = queues;
this._PartsService = parts;
_UsersService = users;
// userId = _UsersService.GetUser().UserId;
userId = 30; //FOR TESTING ONLY !!
}
public void AddToStockFlashQueue(string key)
{
stock_queues sq = new stock_queues();
sq.partnumber = key;
sq.userID = userId;
sq.timestamp = DateTime.Now;
// Adds new entry to Stock Flash queue (if required)
stock_queues part;
int count = _QueuesRepo.Count();
if (_QueuesRepo.Count() > 0)
{
part = _QueuesRepo.FirstOrDefault(f => f.userID == sq.userID && f.partnumber == sq.partnumber); // THIS IS WERE IT ALL BRAKES
}
}
我使用一个控制台应用测试服务并注入依赖关系。该项目是托管的这项服务(不是Windows/Web服务,但实际上是所有魔术的逻辑)是一个MVC应用程序。