eka*_*808 2 c# linq nhibernate
我有以下代码
factory = new Configuration().Configure().BuildSessionFactory();
session = factory.OpenSession();
var query = session.Linq<Root>();
var data = query.ToList<Root>();
var data2 = query.ToList<Root>();
Run Code Online (Sandbox Code Playgroud)
这个生成2个SQL查询,所以我知道第一级缓存不起作用.LINQ for nhibernate管理一级缓存吗?如果是,如何配置?
先谢谢了.
一般来说,第一级缓存可以避免执行sql,这是一种误解.
始终在数据库上执行查询.这使得100%确定结果完全相同,无论实例是否已经在内存中.例如,在使用连接或条件时,这可能很重要.如果查询实际包含连接或where子句,则没有区别.
如果第一级缓存表示数据库中的同一实例,则确保返回相同的实例.NHibernate执行sql,当它在查询返回的内存中找到相同的对象时,它返回缓存中的那个.但是在执行sql之前无法知道.
只有在使用session.Get或时session.Load,NH才会执行缓存查找,并在找到实例时避免查询.
AFAIK,Linq for NHibernate对缓存没有什么特别之处.