c# - 返回 IQueryable 类型 : The entity or complex type '' cannot be constructed in a LINQ to Entities query

标签 c# linq entity-framework

我正在运行查询以在单个选择下拉菜单中填充选项。当我调试下面的函数时,查询变量包含我期望的结果集。然而,当我跳到它应该返回的地方时,我得到了错误:

'The entity type or complex type 'Models.zz_Member' cannot be constructed in a LINQ to Entities query."

    public IQueryable<zz_Member> GetMembers(string searchText)
    {
        var _db = new Portal.Models.AuthorizationContext();
        IQueryable<zz_Member> query = _db.zz_Members;

        return query //.Where(a => a.memLastName.Contains(searchText))
            .Select(a => new zz_Member()
                {
                    ID = a.ID,
                    memFirstName = a.memFirstName,
                    memLastName = a.memLastName
                }
            );
    }

zz_Member 模型对象定义为:

    public class zz_Member
    {
        [ScaffoldColumn(false)]
        public int ID { get; set; }
        public string memFirstName { get; set; }
        public string memLastName { get; set; }
    }

当我尝试转换为 IList 时抛出错误,但是当我使用调试器检查 memList 的值时,它会在结果 View 中显示错误文本。

    IQueryable<zz_Member> memList = GetMembers(e.Text);
    IList<zz_Member> memList2 = memList.ToList();

我还尝试编写 GetMembers 函数来返回列表:

    public IList<zz_Member> GetMembers(string searchText)
    {
        var _db = new WWCPortal.Models.AuthorizationContext();
        return (from m in _db.zz_Members
                where m.memLastName.Contains(searchText)
                select new zz_Member { ID = m.ID, memFirstName = m.memFirstName, memLastName = m.memLastName }).ToList();
    }

关于为什么结果集似乎没有返回给调用者并放入 memList 的任何提示或答案?谢谢。

最佳答案

您不能在投影中使用框架相关/生成的实体(使用 select new),因此会出现错误。


看起来您正在尝试选择特定列而不是所有列,您的选项是

  • 那些 特定成员一起设计一个新类(class)
  • 返回您实体的所有字段/列,例如:

代码:

 return query.Where(a => a.memLastName.Contains(searchText)); //without `select new`

关于c# - 返回 IQueryable 类型 : The entity or complex type '' cannot be constructed in a LINQ to Entities query,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29238546/

相关文章:

c# - 如何在没有SSIS包的情况下将数据从一个数据库移动到另一个数据库

C# LINQ - 在 IList 初始值设定项中迭代多个集合

c# - EF core QueryFilter 的性能问题

c# - 在 ASP.Net Identity 2.0 UserManager.Users.ToListAsync 和 UserManager.FindByIdAsync 上包含属性

c# - 如何为有限的代码部分使用命名空间

c# - 提高 LINQ 查询的性能

c# - 如何获得至少包含另一个列表的所有值的列表?

c# - 在 Table<> 上的 Lambda Where() 中使用联接的任何方法?

c# - 没有默认数据库时的 Entity Framework 6 和迁移

c# - 三元运算符;这个语法有什么问题?