Jon*_*ood 1 c# entity-framework anonymous-types
我的代码类似于以下内容.
using (MyEntities context = new MyEntities())
{
var activities = from act in context.Activities
where act.ActTwittered == false
select new { act.ActID, act.ActTitle, act.Category, act.ActDateTime, act.Location };
foreach (var activity in activities)
{
/* ... */
}
}
Run Code Online (Sandbox Code Playgroud)
这似乎工作正常,但我的循环有很多处理.我担心在此处理期间我将保留数据库连接或其他资源.
我尝试var activities在using语句之前声明,因此我可以在using语句之后处理数据,但是必须在声明它的地方初始化该变量.
知道EF内部工作原理的人能否告诉我,当EF上下文"活着"时,是否存在长时间处理的问题,以及我如何减轻这些问题.
虽然我在这里,也许你也可以评论我act.Category.CatName在循环中使用的事实.这是相关表格中的值.我最好在我的EF查询中使用连接,这样我就可以一次性获取数据而不是强制另一个(?)数据库访问来获取相关数据?
您可以让编译器通过调用泛型方法来推断结果类型:
public static T CallFunc<T>( Func<T> theFunc )
{
return theFunc();
}
...
var activities = CallFunc( () =>
{
using( var context = new MyEntities() )
{
return
(
from act in context.Activities
where act.ActTwittered == false
select new { act.ActID, act.ActTitle, act.Category, act.ActDateTime, act.Location };
)
.ToList();
}
} );
foreach( var a in activities ) ...
Run Code Online (Sandbox Code Playgroud)
不要忘记.ToList()最后,否则在你对它进行枚举之前,你的查询将不会被实际执行,这将在关闭上下文后发生.
| 归档时间: |
|
| 查看次数: |
326 次 |
| 最近记录: |