我的控制器需要获取传递回视图的数据。我应该在哪里打开连接以传递到存储库?这是一个例子。这是我的一个控制器的一部分。
using (var connection = this.GetActiveConnection())
{
var repository = new RefRepository(connection);
var codes = repository.GetPoACodes();
}
在控制器中打开连接是不好的做法吗?如果我没有通过控制器传递它,我应该在哪里将连接传递到存储库?
最佳答案
实际上,存储库必须自己处理连接,这不应该与控制器有关。
控制器类必须保持精简,并且如果发胖,则会产生代码异味。
如果您可以使用依赖项注入框架(例如Ninject,StructureMap等)来连接那些依赖项,处理DbContext或Session和SessionFactory(EF或NHibernate),Transaction或工作单元模式,那将是一个很好的实践。如果您想深入了解异常处理和日志记录,请联系我们。
如果您使用的是Visual Studio,则在“项目模板”中还有一个选项也可以创建存储库,您可以创建示例项目,阅读代码并了解代码的组织方式。
在此article中的Web API头下,您可以找到操作方法。
关于c# - 我应该在 Controller 中打开数据库连接吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13688154/