Информация о проекте: WPF, PRISM, C # 4.0, WCF, Entity Framework, SQL (экспресс)
Моя база данных содержит несколько «констант», например, у человека есть классификация -> Физическое лицо (ID = 1)или законный человек (ID = 2).
Я хочу вывести эти константы из БД и сохранить их в кеше, чтобы их можно было использовать во всем приложении, чтобы они не были жестко запрограммированы».Я знаю, что вы можете хранить эти константы в статическом классе, но это будет работать, только если эти константы не изменятся в БД (и я не хочу полагаться на этот факт).
Мой вопрос: как я могу эффективно загрузить эти константы из БД и поместить их в мой кеш?
Вот как я написал это сейчас, но это просто не правильно ...
using (DetacheringenEntities objectcontext = new DetacheringenEntities())
{
int natuurlijkPersoonClassificationResult = objectcontext.Classification.Where(c => c.Value == "Natuurlijk Persoon").Select(c => c.ClassificationID).SingleOrDefault();
int rechtspersoonPersoonClassificationResult = objectcontext.Classification.Where(c => c.Value == "Rechtspersoon").Select(c => c.ClassificationID).SingleOrDefault();
int klantPersonAgreementRoleResult = objectcontext.PersonAgreementInvolvementRole.Where(p => p.Value == "Klant").Select(p => p.PersonAgreementInvolvementRoleID).SingleOrDefault();
... (about 10 more of these calls)
}
После получения этих данных из БД я помещаю их в свой кеш:
DefaultCacheProvider cacheProvider = new DefaultCacheProvider();
cacheProvider.Set("NatuurlijkPersoon", natuurlijkPersoonClassificationResult, 30);
Я использую репозиторий для своего кэширования, поэтому я также могу выполнить модульный тест позже.
Я пытался создать общий метод, но я ужасно потерпел неудачу: P
private int GetDatabaseConstantValue<T>(Expression<Func<T, bool>> expression, DetacheringenEntities context)
{
int result = context
.CreateQuery<T>(
"[" + typeof(T).Name + "]")
.Where(expression)
.Select(typeof(T).Name + "ID").FirstOrDefault(); --> This doesn't work (obviously), but I want to select the ID of that table (which is always Tablename + ID).
return result;
}
Есть идеи, как мне решить эту проблему или сделать ее лучше?
Спасибо за любыепомогите !!
PS: Любые советы также приветствуются:)