Связывание данных непосредственно с запросом хранилища (DbSet, DbQuery, DbSqlQuery) не поддерживается
Кодирование на visual studio 2012 и использование Модели сущностей в качестве моего слоя данных. Тем не менее, мой выпадающий элемент управления с выражением Linq обычно бросает необработанное исключение, когда страница пытается загрузить (указанный выше заголовок). Вот мой код ниже;
using (AdventureWorksEntities dw = new AdventureWorksEntities())
{
ddlCon.DataSource = (from em in dw.Employees
select new { em.Title, em.EmployeeID });
ddlCon.DataTextField = "Title";
ddlCon.DataValueField = "EmployeeID";
ddlCon.DataBind();
ddlCon.Items.Insert(0, new ListItem("--Select--", "--Select--"));
}
- Я хочу знать, почему произошла эта ошибка.
- Каким должен быть правильный способ привязки к элементу управления при использовании LINQ?
Ответы
Ответ 1
Ошибка довольно ясна - вы не можете напрямую привязываться к результатам запроса, но вместо этого нужно заполнить некоторую локальную коллекцию.
Самый простой способ сделать это - преобразовать его в List<T>
через ToList()
:
ddlCon.DataSource = (from em in dw.Employees
select new { em.Title, em.EmployeeID }).ToList();
Ответ 2
Или, если вы хотите избежать выражения выражения LINQ, вы можете просто сделать это:
var dbContext = new EF.CustomerEntities();
gvCustomers.DataSource = dbContext.CustomersTable.ToList();
Ответ 3
хотя на этот вопрос уже был дан ответ, я хочу показать, что вы даже можете получить ответ прямо из окна сообщения (я получил ту же ошибку) ОШИБКА ДИАЛОГ КОРОБКА ИЗОБРАЖЕНИЕ
using (var retrive=new Models.Academy_MSDBEntities())
{
var query = retrive.Students.Where(s => s.Year == year).ToList();
return query;
}