Ref*_*din 1 c# linq datacontext using linq-to-sql
有人可以向我解释下面的内容.首先是我如何调用该方法,第二位是LINQ方法.
我的好奇心源于这样一个事实,即context如果我不批评该using部分,我会收到错误.
为什么?我显然不完全明白using和context's.我想更好地理解这一点.
Guid workerID = new Guid(new ConnectDAL.DAL.Security().GetUserIDByUserLogin(HUD.CurrentUser));
var myMembers = BLLCmo.GetAllMembers(workerID);
if (myMembers.Rows.Count != 0)
{
dgvMyMembers.DataSource = myMembers;
}
else
{
var allMembers = BLLCmo.GetAllMembers();
dgvMyMembers.DataSource = allMembers;
}
internal static CmoDataContext context = new CmoDataContext();
public static DataTable GetAllMembers()
{
DataTable dataTable;
//using (context)
//{
var AllEnrollees = from enrollment in context.tblCMOEnrollments
select new
{
enrollment.ADRCReferralID,
enrollment.ClientID,
enrollment.CMONurseID,
enrollment.CMOSocialWorkerID,
enrollment.DisenrollmentDate,
enrollment.DisenrollmentReasonID,
enrollment.EconomicSupportWorkerID,
enrollment.EnrollmentDate
};
dataTable = AllEnrollees.CopyLinqToDataTable();
//}
return dataTable;
}
Run Code Online (Sandbox Code Playgroud)
"使用"块会自动处理您正在使用的对象.由于您没有提供有关确切错误的更多详细信息,因此我认为它与"使用"将处理您的"上下文"相关,然后您将尝试再次使用您的上下文.
数据上下文应以原子方式使用.它们已经在内部被编码为高效的,通常没有合理的理由让它像你一样长时间运行.您看到大多数使用"使用"的示例的原因是因为它们在使用之前(或在其中)之前立即初始化了数据上下文,然后不尝试引用已处置的上下文.
最后,处理对象会导致它们释放所有内部内存引用(例如打开的连接,缓存的数据等).
//Our context exists right now ... unless we've already called this method since the app started ;)
var myMembers = BLLCmo.GetAllMembers(workerID); // Context is disposed at the end of this call
if (myMembers.Rows.Count != 0)
{
dgvMyMembers.DataSource = myMembers; //No prob, we didn't call our function again
}
else
{
var allMembers = BLLCmo.GetAllMembers(); // Oops, our context was disposed of earlier
dgvMyMembers.DataSource = allMembers;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
227 次 |
| 最近记录: |