Longue histoire courte: J'utilise LINQ to SQL, mais ai des problèmes avec sa mise en cacheLINQ to cache SQL émet
Mon application métadonnées conduit, donc je ne veux pas la mise en cache sur (changements dans la db devrait être reflété dans le site Web sur une actualisation de page). Y a-t-il un moyen de désactiver la mise en cache? ou un moyen de réinitialiser le cache (par exemple actuellement lorsque je change des données dans la base de données, je dois physiquement changer le code et recompiler avant de voir les résultats).
Et enfin une question C# (j'espère que c'est une erreur de base de ma part). Dans le code ci-dessous si je cours method1
puis method2
puis doc2 == doc1
(et je veux obtenir la valeur d'origine de la db)
Cela me semble très étrange que la classe RecordDictionary
est données pivotée (donc ne se rapportent pas directement au modèle), et dans mon code les affectations sont dans des contrôleurs différents; mais en quelque sorte LINQ to SQL est des changements de mise en cache appliqués à doc1
et de les appliquer à doc2
(si je sors de mon application, et recompiler alors doc2
égal ce que je pense que ce soit (jusqu'à ce que je change doc1
)
exemple Contrived
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;
}
Cache cache homie. – jason
Comment savez-vous que LINQ to SQL est en cache? – Jacob
Parce que si j'apporte des modifications directement dans la base de données, ces modifications ne sont pas répercutées dans l'application. –