gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-03 21:23:09 27 4
gpt4 key购买 nike

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

'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/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com