实体DBContext到LinQ

时间:2014-09-18 13:11:16

标签: c# entity-framework

我是Entity Framework的新手。请帮忙。

我使用Entity Framework,DBCoontext获得Stored Proc结果并绑定到Server control Repeater。现在有了这个结果,我需要执行另一个操作,获取记录数并将其分配给Label

using(var DBContext = new DBEntities())
{
   Repeater.DataSource = DBContext.SP_GetRecords();                
   Repeater.DataBind();
   Label.Text = DBContext.SP_GetRecords().Count().ToString();
}

问题:我不想再次调用SP_GetRecords()。意思是,我不想进行SQL调用。在直接的ADO.NET中,我们可以得到DataTable的结果,绑定到一个控件,应用LinQ来根据某些条件得到计数。我们可以在EntityFramework中做同样的事吗?

2 个答案:

答案 0 :(得分:2)

我不知道我是否正确理解了这个问题,但这会为你做到这一点吗?请注意fetch上的ToList()调用,以确保我们只枚举一次。

using(var DBContext = new DBEntities())
{
   var records = DBContext.SP_GetRecords().ToList(); // Enumerate
   Repeater.DataSource = records; // will not                 
   Repeater.DataBind();
   Label.Text = records.Count().ToString();
}

答案 1 :(得分:2)

您可以将存储过程分配给结果,然后根据自己的喜好分配/执行操作。我不知道它返回的是什么(所以我假设某种列表/可用数据),但你基本上可以这样做:

using(var DBContext = new DBEntities())
{
   var results = DBContext.SP_GetRecords();
   Repeater.DataSource = results;                
   Repeater.DataBind();
   Label.Text = results.Count.ToString();
}