我为我的项目采用了存储库/服务设计模式,当我构建它时,我对自己进行了思考。
获取存储库的所有项目(将其保存在缓存中)然后使用 LINQ 进行过滤而不是每次调用都使用数据库连接会更好吗?
例如,我有这个:
public Asset Get(int id)
{
return GetAll().Where(a => a.Id == id).FirstOrDefault();
}
public IList<Asset> GetAll()
{
return AssetData.Get(userId, companyId);
}
而不是:
public Asset Get(int id)
{
return AssetData.Get(id, userId, companyId);
}
public IList<Asset> GetAll()
{
return AssetData.Get(userId, companyId);
}
我认为第一个是最好的,因为它可以加快系统速度并且数据库连接/查询会更少。
那么,有人可以向我解释一下这种情况的最佳实践吗?
最佳答案
这是过早的优化。在您开始使用该应用程序之前,您不知道瓶颈在哪里。等到您开始受到性能影响,然后看看可以采取哪些措施来提高性能。您还对许多服务日常使用的成熟技术进行了二次猜测。如果处理得当,数据库相当健壮且高性能。
通过将存储库放在界面后面,您已经做了正确的事情。这使您可以灵活地更改实现,而无需更改使用的代码。考虑使用 ERM 解决方案,如 NHibernate有 caching内置。重新发明别人已经改进过的轮子是没有意义的。
关于c# - 数据库连接(最佳实践),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18062041/