我使用此代码从EntityFrameWork中的数据库加载数据,但它向我显示了此错误。
无法在LINQ to Entities查询中构造实体或复杂类型“DatabaseModel.State”。
public class StateRepository : BaseRepository
{
public IQueryable Where(System.Linq.Expressions.Expression<Func<Models.DomainModels.State, bool>> predicate)
{
return db.States
.Where(predicate)
.Select(states => new State
{
Id = states.Id,
Country_Id = states.Country_Id,
Name = states.Name,
PhoneCode = states.PhoneCode
});
}
}
var objStateRepository = new StateRepository();
datagrideview1.DataSource = objStateRepository.Where(p => p.Name.Contains(txtSearchState.Text)).ToList();
答案 0 :(得分:1)
您无法将项目创建为由EF映射的实体,而是使用匿名类型:
return db.States
.Where(predicate)
.Select(states => new
{
Id = states.Id,
Country_Id = states.Country_Id,
Name = states.Name,
PhoneCode = states.PhoneCode
}).ToList()
然后,您可以使用State
ToList()
的实例
另一种选择是创建一个类(例如DTO)并在投影语句中使用。