У меня есть база данных с кучей ссылочных таблиц, таких как Штаты, Языки и т. Д. Я хотел бы иметь возможность кэшировать эти таблицы, а затем использовать эти типы в любом объекте ObjectContext, который я хочу. Таким образом, в псевдо-код, который я хочу, чтобы быть в состоянии сделать что-то вроде этогоКэширование объектов POCO в 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();
Я видел этот блог (http://blogs.msdn.com/b/alexj/archive/2009/04/22/tip-14-caching-entity-framework-reference-data.aspx). Но это не относится ко мне, потому что я думаю, что он не использует POCO. Когда я пытаюсь привязать кэш-объект к объекту, я получаю исключение, потому что объект с этим основным ключом уже находится в коллекции состояний контекста.
Кажется, что кеширование справочных таблиц должно быть довольно распространенной проблемой, но я не могу найти для этого прямых решений.
Вы правы действительно, но это не говоря уже о том, что вы можете получить исключение, если вы пытаетесь прикрепить клонированный объект в этом же контексте более чем один раз. Это то, что давало мне проблемы –