Sql server 在实体框架中禁用/防止锁定表

Sql server 在实体框架中禁用/防止锁定表,sql-server,asp.net-mvc,entity-framework,Sql Server,Asp.net Mvc,Entity Framework,我正在为我的在线商店使用ASP.NETMVC和EntityFramework6。我正在使用以下代码保存产品页面第一行的浏览次数: vmProduct.product.seenCount = Convert.ToInt32(vmProduct.product.seenCount) + 1; db.SaveChanges(); 在“产品列表”页面中,按seenCount列对列表进行排序 但是,当我的站点有许多请求时,由于向产品添加计数,产品表被锁定,其他任何查询都会在SQL Server中等待,

我正在为我的在线商店使用ASP.NETMVC和EntityFramework6。我正在使用以下代码保存产品页面第一行的浏览次数:

vmProduct.product.seenCount = Convert.ToInt32(vmProduct.product.seenCount) + 1;

db.SaveChanges();
在“产品列表”页面中,按
seenCount
列对列表进行排序

但是,当我的站点有许多请求时,由于向产品添加计数,产品表被锁定,其他任何查询都会在SQL Server中等待,因此我的站点在几分钟内不会加载,如果我对代码进行注释,我的问题就解决了


在向产品表添加计数时,是否有任何方法可以禁用或防止锁定产品表?或者这里的解决方案是什么

提高并发性的一种方法是启用
READ\u COMMITTED\u SNAPSHOT
数据库选项,以便SQL Server使用行版本控制而不是锁定来提供
READ COMMITTED
隔离级别的完整性。行版本控制提高了并发性,但代价是额外的tempdb使用量(对于行版本存储)和数据库空间(对于行版本,每行14字节)。看


<> P>而不是每次访问数据库以获得最新排序的产品列表,考虑缓存数据并在后台定期刷新列表。这将大大提高数据库和应用程序的性能

谢谢你的回答,我将在几个小时后测试
阅读提交的快照
,并在这里分享结果。@sepherstaki你发表此评论已经超过26000小时了。您现在可以共享您的结果吗?仅仅因为发生了一些更新,您的表就不应该被锁定-SQL Server使用行级锁定,只要给定事务的活动锁定不超过5000个。。。。。