2012-07-21 90 views
2

我有一个ASP.NET MVC应用程序使用EF 4.1与Poco类。实体框架4.1 Poco类避免多个数据库往返

当我得到多个实体,如:

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

这三个实体之间的关系是什么?您可以通过查看为每个导航属性创建的导航属性进行检查。 – Chris 2012-07-21 15:09:21

+0

他们之间没有关系。是单独的目录。我读到EF 5将通过调用存储过程来支持多个实体,所以这将非常棒,因为您可以创建一个获得5个表格的SP,并且EF 5将使用模型映射每个表格。但现在我认为它不可能。 – VAAA 2012-07-21 16:39:24

回答

0

在这种情况下,由于没有关系并且涉及多个表格,所以在使用EF 4.1时必须进行多次行程。这是因为没有办法在这些表之间提供某种JOIN来合并多个SQL语句。尽管必须进行多次行程,但通过在保持相同环境(如果可能)的情况下在DbSets之间切换,在一个连接下执行每次行程仍然是相对无痛的。