今天在对一个DbSet进行查询后,将查询的结果集直接绑定到DataGrid,如下面代码:
var data = from s in PlatDbContext.PlatDbContextInstance.FormUIDataGridConfiguration
where s.FormID == formId
orderby s.OrderID ascending
select s;
this.grid.DataSource = data;
结果在运行时出现了以下错误提示:
不支持直接到存储查询(DbSet、DbQuery、DbSqlQuery、DbRawSqlQuery)的数据绑定。应使用数据填充 DbSet (例如通过对 DbSet 调用 Load),然后绑定到本地数据。对于 WPF,请绑定到 DbSet.Local。对于 WinForms,请绑定到 DbSet.Local.ToBindingList()。对于 ASP.NET WebForms,您可以绑定到对查询调用 ToList() 的结果,或者使用模型绑定,有关详细信息,请参阅 http://go.microsoft.com/fwlink/?LinkId=389592。
对于这个问题,最简单的方法只需要将查询的结查集转为ToList()就可以了,如下:
var data = from s in PlatDbContext.PlatDbContextInstance.FormUIDataGridConfiguration
where s.FormID == formId
orderby s.OrderID ascending
select s;
this.grid.DataSource = data.ToList();