c# – ASP.NET WebAPI 2实体框架连接缓存的最佳实践
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了c# – ASP.NET WebAPI 2实体框架连接缓存的最佳实践,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1187字,纯文字阅读大概需要2分钟。
内容图文
我正试图找出使用WebAPI和Entity Framework在我的平台上执行操作的最佳方法.
现在我正在为每个请求创建一个新连接:在每个控制器中都有一个对象被实例化并为每个方法处理.
public class SchedulerController : ApiController
{
private ApplicationDbContext db = new ApplicationDbContext();
protected override void Dispose(bool disposing)
{
if (disposing)
db.Dispose();
base.Dispose(disposing);
}
}
在我看来,为每个请求创建连接是一个影响性能的完整开销.我知道在Java上有一些工具(可能是Nutcracker?)处理一种连接池以重用相同的连接,这样可以提高性能.
在c#/ ASP.NET / Azure平台上有类似的东西吗?
我非常感谢请求增长数字的性能比较.
编辑:这主要是指DbContext自身的缓存.
解决方法:
我认为您误解了实体框架的工作原理.
EF使用ADO.NET,因此连接池实际上由提供者管理.您可以通过连接字符串更改池的行为.我相信它默认重用连接.
EF也在内部使用一些模式,如工作单元,因此它意味着封装一组操作(因此名称中的“上下文”一词).这就是为什么你有一个SaveChanges()方法“提交”数据库的一切.
因此,实际上建议您为每个请求创建一个新实例,以保证“工作单元”的完整性,即使这样,您也应该确保以转换为原子事务的方式保存更改在db方面的事情.
但是,您可以做的只是在需要时创建实例,而不是让控制器在每次请求时创建实例.再说一次,如果你使用的是Web API,你几乎总是需要访问数据,所以……
内容总结
以上是互联网集市为您收集整理的c# – ASP.NET WebAPI 2实体框架连接缓存的最佳实践全部内容,希望文章能够帮你解决c# – ASP.NET WebAPI 2实体框架连接缓存的最佳实践所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。