2015-11-23 8 views
0

В настоящее время я создаю приложение, в котором я рассматриваю возможность поддержки нескольких баз данных (SQL Server, MySQL).Поддержка нескольких баз данных Autofac

Я рассматриваю, чтобы иметь что-то вроде следующего:

public interface IUserEngine { 
    User Get(int id); 
} 

public class MsSqlUserEngine : IUserEngine { 
    public User Get(int id) { 
     // implementation 
    } 
} 

public class MySqlUserEngine : IUserEngine { 
    public User Get(int id) { 
     // implementation 
    } 
} 

На данный момент у меня просто есть интерфейс и реализацию фиксированной SQL Server (UserEngine). Я уже использую AutoFac для ввода IUserEngine в свой логический уровень.

В моем AutofacConfig классе я следующее:

builder.RegisterType<UserEngine>().As<IUserEngine>(); 

Чтобы перейти от этой реализации SQL Server для будущей реализации MySQL, что бы мне нужно изменить?

Просто добавьте оператор if, который будет читать AppSetting из файла конфигурации и зарегистрировать соответствующий тип?

+0

Собираетесь ли вы использовать MsSqlUserEngine и MySqlUserEngine во время выполнения? – Win

+0

Нет. Только по одному. Я думал, что там должен быть какой-то конфигурационный файл, позволяющий Autofac соответствующим образом разрешать зависимость. – HelderMPinhal

ответ

1

Необходимо использовать механизмы Autofac, Autofac config. Создайте правильные конфиги и поменяйте их по мере необходимости.

+0

Я понимаю, что это правильный правильный подход, чтобы назвать классы. Но это был не мой вопрос. Как бы я переключался между этими двумя строками кода? Некоторый оператор if, который будет читать файл конфигурации и соответствующим образом регистрировать тип? – HelderMPinhal

+0

Непонимание. Я отредактировал свой ответ. – BWA