在id和对象之间映射的最佳方法是什么?对于具有属性PreferenceId<一个id和偏好。我希望Preferences从Cache中读取没有查询数据库。从字典中获取首选项object.Like preferencesDictionary [id]。为每个项目查询数据库的速度很慢。因为每个产品都有3-4个首选项,每个首选项引用一个组,数据太多。再次编写相同的映射代码似乎很糟糕。
我不能,我也不想使用ORM。
最简单的解决方案是在POCO的属性中嵌入从缓存中读取的代码。但这对我来说似乎不正确。任何解决方案如何实现这一目标?
答案 0 :(得分:3)
假设您正在使用存储库模式(您不必这样做,但其他数据访问模式的想法类似):
interface IPocoRepository {
Poco GetById(int id);
}
class DatabasePocoRepository : IPocoRepository {
public Poco GetById(int id) {
// read the POCO from the database
}
}
class CachePocoRepository : IPocoRepository {
private readonly IPocoRepository pocoRepository;
public PocoCachingRepository(IPocoRepository pocoRepository) {
this.pocoRepositry = pocoRepository;
}
public Poco GetById(int id) {
// read from the cache
// if available, return it
// if not, load using pocoRepository and cache
}
}
现在,只要您需要PocoRepository
并希望启用缓存,请使用CachingPocoRepository
。显然你需要编写缓存策略。