J.W*_*.W. 37 c# entity-framework
初始化实体框架上下文时.
一种是在类级别初始化,例如
public class EntityContactManagerRepository
: ContactManager.Models.IContactManagerRepository
{
private ContactManagerDBEntities _entities = new ContactManagerDBEntities();
// Contact methods
public Contact GetContact(int id)
{
return (from c in _entities.ContactSet.Include("Group")
where c.Id == id
select c).FirstOrDefault();
}
}
Run Code Online (Sandbox Code Playgroud)
另一种方法是在方法级别初始化.
public class EntityContactManagerRepository
: ContactManager.Models.IContactManagerRepository
{
// Contact methods
public Contact GetContact(int id)
{
using (var entities = new ContactManagerDBEntities())
return (from c in entities.ContactSet.Include("Group")
where c.Id == id
select c).FirstOrDefault();
}
}
Run Code Online (Sandbox Code Playgroud)
从Ado.Net背景来看,我更喜欢后来的one-initialize in方法,但第一个是来自Stephen Walthe开发的例子.或者另一个问题,它是否重要?
Cra*_*ntz 31
这很重要,因为上下文控制着变更跟踪数据的生命周期,并且还会影响您在编辑对象时可以链接在一起的对象实例,因为两个不同上下文中的对象不能彼此建立关系.在我看来,您共享的示例来自ASP.NET MVC应用程序.在这种情况下,我通常每个请求使用一个实体上下文,因为请求是短暂的,并且因为在更新请求中的对象时,必须获取其他对象并在它们之间创建关系.
另一方面,您不希望长时间保持实体上下文,因为它会跟踪内存,因为它会跟踪对越来越多对象的更改.
这似乎是"每个类的一个上下文"选项的参数,但实际上并非如此.这更像是"每单位工作一个背景"的论据.
| 归档时间: |
|
| 查看次数: |
32721 次 |
| 最近记录: |