我有一个使用EF 4.1和Poco Classes的ASP.NET MVC应用程序。
当我得到多个实体时:
var users = db.Users.Where(u=>u.IsActive).ToList();
var transactions = db.Transactions.Where(t=>t.IsActive).ToList();
var customers = db.Customers.Where(c=>c.IsActive).ToList();
在这种情况下,数据库被击中3次?如果有的话,有没有办法强制EF 4.1只在一次往返中进行这些调用?
我问这个是因为我有一个功能必须得到14个实体并更新其他17.所以很高兴知道这是如何在幕后工作。
答案 0 :(得分:0)
在这种情况下,由于没有关系并且涉及多个表,因此在使用EF 4.1时必须进行多次跳闸。这是因为无法在这些表之间提供某种JOIN来合并多个SQL语句。虽然必须进行多次旅行,但是通过在DbSets之间切换同时保持相同的上下文(如果可能),在一个连接下进行每次旅行仍然会相对轻松。