Изменить текст атрибутивной UILabel без потери форматирования?

A DbContext должен жить для одной бизнес-операции (единицы работы), не более того. Бизнес-транзакция обычно представляет собой запрос, страницу или форму.

Вам действительно нужно прочитать документацию по Entity Framework: Работа с DbContext .

Я бы не создал экземпляр для каждого репозитория, поскольку бизнес-транзакция может управлять несколькими репозиториями.

Вы можете вставить контекст в свой репозиторий:

public class BaseRepository
{
    private IConfigurationContext context;
    public BaseRepository(IConfigurationContext context)
    {
        this.context = context;
    }
    //...
}

Измените свой завод, чтобы он каждый раз создавал экземпляр:

public interface IConfigurationContextFactory
{
    IConfigurationContext CreateContext();
}

// ...
public ConfigurationContext CreateContext()
{
    return new ConfigurationContext(connectionString);
}

Затем настройте свой преобразователь зависимостей, чтобы ввести IConfigurationContext на единицу работы. Предположим, вы работаете над приложением ASP.NET, используя единство.

container.RegisterType(
    //Instance per http request (unit of work)
    new PerRequestLifetimeManager(),
    //Create using factory
    new InjectionFactory(c => c.Resolve.CreateContext()));

Не забудьте позвонить SaveChangesAsync в конце вашей бизнес-транзакции, когда это необходимо: операция выполнена успешно, а модификации должны быть сохраняется.

19
задан Lewis42 3 October 2012 в 10:03
поделиться