C# 在实体框架中加载两次或仅加载一次的记录

C# 在实体框架中加载两次或仅加载一次的记录,c#,entity-framework,C#,Entity Framework,我是实体框架的新手,正在寻求帮助 我的实体数据模型有以下C#代码。我的问题是:供应商会从数据库中获取供应商两次还是只获取一次?这些语句在我的代码中的显示顺序完全相同。我不确定是否会缓存第一次调用“应付款.供应商”,因此第二次调用“应付款.供应商”不会转到数据库 PayablesEntities payables = new PayablesEntities(); var selectedVendor =(from vendor in payables.Vendors

我是实体框架的新手,正在寻求帮助

我的实体数据模型有以下C#代码。我的问题是:供应商会从数据库中获取供应商两次还是只获取一次?这些语句在我的代码中的显示顺序完全相同。我不确定是否会缓存第一次调用“应付款.供应商”,因此第二次调用“应付款.供应商”不会转到数据库

PayablesEntities payables = new PayablesEntities();

var selectedVendor =(from vendor in payables.Vendors
                     where vendor.VendorID == vendorID
                     select vendor).First();

var pendingVendor = (from vendor in payables.Vendors
                     where vendor.IsPending == true
                     select vendor).First(); 

由于您有两个单独的查询,因此将有两个
SQL
查询要执行。
LINQ to Entities
不会神奇地组合您的查询。如果您要执行一个查询,则需要创建一个查询并组合它们。

我想您没有看到我的问题。我想知道的是,这些供应商是否从数据库中检索了两次?@Sunil对不起,我注意到现在更新了答案。我想EF会以某种方式将记录缓存一段时间,但我想不会。@Sunil-hmm我对缓存知之甚少,但我认为EF不会自动完成。无论如何,您可以使用SQL Profiler并亲自体验,然后告诉我们:)这篇文章可能会有所帮助:@hometoast-EF版本是4.0.0.0v5支持对象缓存,4.0不支持开箱即用。()@hometoast,那么v5会自动在我的代码段中缓存供应商对象吗?我希望我有一个更具体的答案。我之所以知道这一点,是因为我不久前在考虑EF或nhibernate,而ef5在我完成项目后不久就推出了缓存。