长话短说:我使用LINQ到SQL,但LINQ到SQL高速缓存的问题
我的应用程序元数据驱动的因与它的缓存问题,所以我不希望在高速缓存(在DB的变化应该是反映在网页上刷新页面)。有没有办法关闭缓存?或者重置缓存的方法(例如,当我更改数据库中的数据时,我必须在看到结果之前在物理上更改代码并重新编译)。
最后一个C#的问题(希望我的一个基本错误)。 在下面的代码,如果我跑method1
然后method2
然后doc2 == doc1
(我希望它从DB获得原始值)
为RecordDictionary
类转动数据(所以并不直接涉及这似乎很奇怪,我到模型),并在我的代码中分配在不同的控制器;但不知何故,LINQ to SQL是应用缓存更改doc1
并将它们应用到doc2
(如果我退出了我的应用程序,并重新编译然后doc2
等于什么,我希望它是(直到我改变doc1
)
人为的例子
public RecordDictionary method1()
{
RecordDictionary doc1 = genericRepository.GetRecordById(
action.AppliesToModelEntityId, 27);
//do some stuff to doc1 here
return doc1;
}
public RecordDictionary method2()
{
RecordDictionary doc2 = genericRepository.GetRecordById(
action.AppliesToModelEntityId, 27);
return doc2;
}
public RecordDictionary GetRecordById(int ContainerModelId, int id)
{
var query = (from dv in _db.DataValues
where dv.DataInstance.IsCurrent == true &&
dv.DataInstance.DataContainer.DataContainerId == id
select new {
dv.DataInstance.DataContainer.ParentDataContainerId,
dv });
RecordDictionary result = CreateRecordColumns(
ContainerModelId, query.FirstOrDefault().ParentDataContainerId);
result.Id = id;
foreach (var item in query)
{
if (result.ContainsKey(item.dv.ModelEntity.ModelEntityId))
result[item.dv.ModelEntity.ModelEntityId] = item.dv;
}
return result;
}
Straight cache homie。 – jason 2010-01-06 04:51:41
你怎么知道LINQ to SQL缓存? – Jacob 2010-01-06 05:00:54
因为如果我直接对db进行更改,那么这些更改不会反映回应用程序。 – 2010-01-06 20:03:26