我是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中做同样的事吗?
答案 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();
}