Я пытаюсь поделиться простым DbContext с 4 DbSets среди нескольких репозиториев, каждый из моих репозиториев наследуется от этого базового класса
public class CodeFirstRepository : IDisposable
{
private static MyContext _ctx = new MyContext();
protected MyContext Context
{
get { return _ctx; }
}
public void Dispose()
{
if (Context != null)
{
Context.Dispose();
}
}
}
Вопрос : это подходящий способразделить соединение между репозиториями?
У меня периодически возникают сбои в моих модульных тестах при доступе к различным репозиториям.Исключение выдается из метода репозитория GetEntityByName
public IOfferResult GetEntityByName(string name)
{
return Context.Entities.Where(o => o.Name == name).FirstOrDefault()
}
Метод теста Tests.Service.TestDelete выбросил исключение: System.ObjectDisposedException: экземпляр ObjectContext был удален и больше не может использоваться для операций, которыетребуется соединение.
, если база данных уже существует, код выполняется так, как ожидается.это также работает, когда я изменяю реализацию GetEntityByName (имя строки) на следующий неисполненный код
public IOfferResult GetEntityByName(string name)
{
foreach (OfferResult offer in Context.Offers)
{
if (offerName.ToLower() == offer.Name.ToLower())
{
return offer;
}
}
}
Вопрос : что здесь происходит?
имейте в виду, что если база данных существует, когда я запускаю тесты, я вообще не получаю ошибку.
tia, jt