我是Mvc的新手。
对不起我的英文。 ^^
我对控制器中的asp.net MVC会话有一些疑问。
我想做的事情如下:
首先,我的开发环境是entityframework和mvc3。
当有人登录时,每个人都有不同的数据库。所以,每个都连接不同的数据库。
因此,每个人都有自己的会话值,即数据库连接字符串。到目前为止一切顺利。
我有简单的数据库存储库,每个存储库的构造函数都可以更改数据库连接。
在调用Repository类的控制器上,我需要会话值。但据我所知,控制器的构造无法保持会话价值。右
我想要你的好建议。提前致谢。
代码示例如下:
public class MasterRepository
{
DBEntities _db;
public MasterRepository(string con)
{
_db = new DBEntities(con);
}
}
public class TestController : Controller
{
private string con;
MasterRepository _db;
public TestController()
{
_db = new MasterRepository(Session["conn"].ToString()); // Session is null I want to solve this Part...
}
public ActionResult Index()
{
string con = Session["conn"].ToString(); // Session is assigned.
return View();
}
}
答案 0 :(得分:0)
我认为你错过了控制器的“服务”部分 - 服务 - 存储库模式:
但是当你沿着这条路走下去时,你可能也需要学习IoC。
然后你的代码看起来更像:
public class MasterRepository
{
public Foo GetAllFoo()
{
return ObjectContextManager.GetObjectContext().AsQueryable().ToList();
}
}
public class MasterService
{
MasterRepository _repository;
public MasterService(MasterRepository repository) // use IoC
{
_repository = repository;
}
public Foo GetAllFoo()
{
return _repository.GetAllFoo();
}
}
public class TestController : Controller
{
MasterService _service;
public TestController(MasterService service) // use IoC
{
_service = service;
}
public ActionResult Index()
{
var model _service.GetAllFoo();
return View(model);
}
}
答案 1 :(得分:0)