Как вызвать ObjectContext.Refresh() при использовании ADO.NET Unit Testable Repository Generator

Я использую "Генератор репозитариев ADO.NET Unit Testable" ( описан здесь) для генерации классов сущностей. Этот шаблон T4 автоматически генерирует следующие классы, кроме классов для объектов базы данных:

  1. < MyEntities>.cs - функциональный контекст конкретного объекта
  2. < MyEntities> BaseRepositoryTest.cs
  3. < MyEntities> Mock.cs - конкретный фиктивный объект контекста, который реализует интерфейс контекста.
  4. < MyEntities> Mock.ObjectSet.cs
  5. < MyModelRepository>.Context.cs
  6. < MyEntities> PartialRespository.cs
  7. I< MyEntities>.cs - интерфейс для контекста специализированного объекта.

Я не совсем уверен, для чего предназначены некоторые из этих классов.

Я использую класс менеджера, который выполняет все операции доступа / обновления базы данных.

// Contains all Methods that access the database 
public class DataManager
{
    private IMyEntities _context;

    public DataManager()
        : this(new MyEntities())
    {
    }

    public bool AddOrder(Order order)
    {
      _context.Orders.AddObject(order);
      _context.SaveChanges();
    }
  ...
  }

я хочу проверить исключения параллелизма при вызове _context.SaveChanges(), В идеале хотелось бы позвонить _context.Refresh() в случае проблемы параллелизма. Однако автоматически сгенерированный класс ObjectContext IMyEntities есть такой метод, как ObjectContext.Refresh()

Что я делаю неправильно? Как я могу вызвать Refresh()?

1 ответ

Решение

AFAIK это не может быть сделано, так как IMyEntities не наследует ObjectContext, Но MyEntities делает.

Когда я меняюсь

private IMyEntities _context;

в

личное MyEntities _context;

я могу позвонить ObjectContext.Refresh() с помощью _context.Refresh(),

Другие вопросы по тегам