Я работаю в веб-приложении .net MVC и использую EF (DB FIRST) для получения данных:
public class LocationManager: MyNetworkEntities, ILocationManager
{
private readonly MyNetworkEntities _dbContext = new MyNetworkEntities();
public LocationManager(MyNetworkEntities context, string connection)
{
// extension for changing connectionstring at runtime
if(connection != null)
context.ChangeDatabase
(
dataSource: connection
);
_dbContext = context;
}
public List<Locations> GetAll()
{
return _dbContext.Locations.ToList();
}
}
Также использую Structuremap:
public DefaultRegistry() {
Scan(
scan => {
scan.TheCallingAssembly();
scan.WithDefaultConventions();
scan.With(new ControllerConvention());
});
For<ILocationManager>().Use<LocationManager>();
}
Мой контроллер:
public class UserController : Controller
{
private readonly ILocationManager _locationManager;
public UserController(ILocationManager locationManager)
{
_locationManager = locationManager;
}
// GET: User
public ActionResult Index()
{
var t = _locationManager.GetAll();
return View("UserManagment");
}
}
Вопрос:
Поскольку я хочу изменить строку db-connection во время выполнения, как бы я это сделал при использовании Structuremap?
Что-то вроде:
string myNewConnection = "connection";
var t = _locationManager.setConnection(myNewConnection).GetAll();
Как мне это сделать?
Примечание: приведенный выше код не завершен, я все еще пытаюсь решить эту проблему.