2010-08-17 9 views
4

J'ai une base de données avec un tas de tables de référence comme Etats, Langues, etc. Je voudrais pouvoir mettre en cache ces tables et ensuite utiliser ces types dans n'importe quel ObjectContext que je veux. Donc, dans le code pseudo Je veux être capable de faire quelque chose comme çaMise en cache des objets POCO dans Entity Framework 4.0

var db1 = new PatientObjectContext(); 
Cache.CacheStates(db1.States.ToList()) 

var person = new Person { State = Cache.GetState("PA")} ; 
var db2 = new PatientObjectContext(); 

db2.People.Add(person) 
db2.SaveChanges(); 

J'ai vu ce post de blog (http://blogs.msdn.com/b/alexj/archive/2009/04/22/tip-14-caching-entity-framework-reference-data.aspx). Mais cela ne s'appliquait pas à moi parce que je pense qu'il n'utilise pas POCO. Lorsque j'essaie d'attacher l'objet mis en cache à objectContext, j'obtiens une exception car un objet avec cette clé primaire est déjà dans cette collection d'états de contextes.

Il semble que les tables de référence de mise en cache devraient être un problème assez commun, mais je ne peux pas sembler trouver des solutions simples pour cela.

Répondre

0

La publication d'Alex est tout aussi pertinente pour les entités POCO que pour les non-POCO. Pourquoi pensez-vous que ce n'est pas?

+0

Vous avez raison, il est valable, mais il ne mentionne pas que vous pouvez obtenir une exception si vous essayez de joindre un objet cloné dans le même contexte plus d'une fois. C'est ce qui me donnait des problèmes –

Questions connexes