【发布时间】:2010-12-27 10:10:27
【问题描述】:
举个例子:
MyDataContext context = new MyDataContext(); // DB connection established.
MyTableRecord myEntity = myDataContext.Table.FindEntity(12345); // retrieve entity
假设我的实体与我将通过
访问的其他表有关系foreach (var record in MyEntity.RelatedTable)
我是否需要在第二行之后保持我的 DataContext 处于活动状态才能访问实体的属性,或者它是否足够安全以进行处置?
我了解 Linq to SQL 使用延迟执行,因此我想知道它是否仅在您最初检索实体时使用延迟执行,或者它是否在访问相关表记录时也使用延迟执行。
示例
var userRepo = new UserRepository(); // creates new DataContext
var auditRepo = new AuditRepository(); // creates new DataContext
var activeUsers = userRepo.FindActiveUsers();
foreach (var user in activeUsers)
{
// do something with the user
var audit = new Audit();
audit.Date = DateTime.Now;
audit.UserID = user.ID;
auditRepo.Insert(audit);
}
我的 repo 中的插入方法调用 SubmitChanges。以上是可以接受的,还是这是对连接的浪费。我真的应该这样做吗:
var userRepo = new UserRepository();
var activeUsers = userRepo.FindActiveUsers();
foreach (var user in activeUsers)
{
// do something with user
var audit = new Audit();
audit.Date = DateTime.Now;
audit.UserID = user.ID;
user.Audits.Add(audit);
userRepo.Save();
}
要重用已经打开的DataContext?如果您打开一个高级数据上下文,然后必须进行一些低级处理,您会怎么做,我应该向下传递 userRepo 还是应该创建一个单独的存储库?
【问题讨论】:
标签: c# linq-to-sql datacontext