【发布时间】:2011-05-09 09:13:12
【问题描述】:
通过 MvcMusicStore 教程,我正在开始一个 MVC 项目。我试图弄清楚 POCO 生成的数据/实体上下文的存储方式。
在示例中,控制器生成实体上下文的副本,所有操作都在那里完成:
MusicStoreEntities storeDB = new MusicStoreEntities();
//
// GET: /Store/
public ActionResult Index()
{
// Retrieve list of Genres from database
var genres = from genre in storeDB.Genres
select genre.Name;
[...]
如果我要将解决方案分层,保留上下文的标准做法(或关键选项)是什么?我是在控制器中生成它,然后将其传递给存储库,还是存储库可以保留通用副本?
我了解以上内容对于使用工作单元模式是必要的。
我的图层是:
- 数据(edmx 文件)
- 实体(从 POCO 生成)
- 存储库
- Mvc 网络应用程序
我的其他问题: - 生成上下文的开销是多少? - 由于没有 .Close(),并且它没有实现 IDisposable,它背后的 ObjectContext 是否生成单独的连接、连接池、共享单个实例? - 如果 ObjectContext 在层/操作之间传递太多,是否可以锁定它?
提前致谢。
【问题讨论】:
-
ObjectContext确实实现了IDisposable: msdn.microsoft.com/en-us/library/…。
标签: asp.net-mvc entity-framework poco