ASP.NET MVC 3 или 4 - как работать со многими БД - PullRequest
1 голос
/ 21 декабря 2011

У меня есть случай, когда у каждого клиента есть своя собственная БД - я хотел бы, чтобы это происходило автоматически, например, когда Autofac создает контроллер, он ищет clientId, а затем получает строку подключения

Следующее получает строку

public class ModuleContextProvider : IModuleContextProvider
{
    IModuleContext context;



    public IModuleContext GetContext(int moduleId)
    {
        if ( context == null) 
        {

            //get module.
            var rep = DependencyResolver.Current.GetService<IModuleRepository>();
            var module = rep.GetById(moduleId);
            context = GetContext(module);
        }

        return context;

    }

    public IModuleContext GetContext(Model.Module module)
    {


        if ( context == null) 
        {

            //get module.
            var rep = DependencyResolver.Current.GetService<IModuleRepository>();
            context = new ModuleContext(module.DBConnection); 
            if ( context == null) 
                throw new InvalidOperationException("Could nto create DB COntext" );
        }

                 return context;
    }
}

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

    public CategoryController(ICommandBus commandBus, ICategoryRepository categoryRepository)
    {
        this.commandBus = commandBus;
        this.categoryRepository = categoryRepository;
    }  

Можно ли использовать ROute, например, // Controller / ModuleId / Method, а затем каким-то образом получить это из URL?

Заранее спасибо за любую помощь.

Редактировать: реальная проблема здесь, я думаю, в том, как продолжать толкать строку соединения (в данном случае в форме модуля).

Ответы [ 2 ]

0 голосов
/ 01 января 2012

Если кому-то это необходимо

0 голосов
/ 21 декабря 2011

Возможно, вы захотите изучить использование IDbContextFactory.

http://msdn.microsoft.com/en-us/library/hh506876(v=vs.103).aspx

Как лучше всего настроить DbContext в StructureMap для консольного приложения?

Он был добавлен в обновлении EF 4.1 1.

Не уверен, поможет ли это вашей проблеме, но в любом случае это полезно знать.

...