我有以下代码:
newCustomerDataSourceDataContext db = GetDataContext();
{
var tId = from t in db._CRM_Ticket_Headers
from p in db.CRM_Priority_LKPs
where t.created >= fromDate &&
t.created < toDate &&
t.priorityId == p.priorityId &&
t.statusId == status &&
t.employeeUserId == csrId
select t;
}
我是否必须手动关闭连接,如果我添加using
,我使用 Linq ,如下所示:
using (newCustomerDataSourceDataContext db = GetDataContext())
{
var tId = from t in db.CRM_Ticket_Headers
from p in db.CRM_Priority_LKPs
where t.created >= fromDate &&
t.created < toDate &&
t.priorityId == p.priorityId &&
t.statusId == status &&
t.employeeUserId == csrId
select t;
}
答案 0 :(得分:2)
这取决于你想要发生什么。如果使用using
块,将在关闭连接的上下文中调用Dispose
方法。但是,如果您的应用程序使用延迟加载,那将不再有效。
答案 1 :(得分:1)
不,一旦你不使用阻止它将被关闭。离开那个区块时,资源会被清理干净。
你应该处理datacontect吗?
答案简短;不,你不必,但你应该......
DataContext保存状态(例如,SqlConnection和指向您已检索的对象的指针)。一旦释放所有引用,这些最终将被GC清理,但是这些对象中的一些(例如,底层的SqlConnection)可能会保留您通常希望在完成后立即释放的资源,而不是依赖于GC清理。
如前所述,如果以懒惰模式检索数据,它将无法正常工作