永发信息网

如何清除LINQ的DataContext的缓存到SQL

答案:2  悬赏:10  手机版
解决时间 2021-03-11 15:04
  • 提问者网友:温旧梦泪无声
  • 2021-03-10 17:31
如何清除LINQ的DataContext的缓存到SQL
最佳答案
  • 五星知识达人网友:舊物识亽
  • 2021-03-10 17:46
如果要刷新一个特定的对象,那么的刷新可能是你最好的选择()方法。

这样的:

Context.Refresh(RefreshMode.OverwriteCurrentValues,objectToRefresh);

您还可以通过对象的数组或一个IEnumerable作为第二个参数,如果你需要刷新更多比一次一个对象。

更新

我看到你在评论中说些什么,在反射器可以看到里面.REFRESH()这种情况发生:

对象objectByKey = context.Services.GetObjectByKey(trackedObject.Type,键值) ;
如果(objectByKey == NULL)
{
掷Error.RefreshOfDeletedObject();
}

您链接的方法似乎是您最好的选择,DataContext类没有按' ŧ提供任何其他的方式来清除已删除的行。处置检查,如在 ClearCache()方法内......这真的只是检查处理,并要求 ResetServices()在 CommonDataServices underneath..the只有不良效果将清除任何未决的插入,更新或删除您已经排队。

还有一个选项,你可以火起来的另一个DataContext的为你做什么操作?它不会有任何缓存,它...但也不涉及一些计算成本,所以如果挂起的插入,更新和删除都没有问题,我会用 ClearCache坚持() 方法。
全部回答
  • 1楼网友:毛毛
  • 2021-03-10 18:11

假设你的三个表全部都已经linq化(生成了对应的类,此类的datacontext叫做dbdatacontext):

using (dbdatacontext dbc = new dbdatacontext()) {  var result = from t1 in dbc.table1     from t2 in dbc.table2     from t3 in dbc.table3     where (t1.autoid=22 && t1.parentid=t2.autoid && t2.parentid=t3.autoid)     select new    {     t1id = t1.autoid,     t1tn = t1.typename,     t2id = t2.autoid,     t2tn = t2.typename,     t3id = t3.autoid,     t3tn = t3.typename

   }; }

我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯