c# - 成员 [class] 不支持转换为 SQL

标签 c# asp.net linq

我收到以下错误:

Error Message:The member 'Company.ProductCore.Core.Domain.Account.Email' has no supported translation to SQL.



我的方法是这样的:
public Account GetAccountByEmail(string email)
        {
            Account account;

            using (WorkbookDataContext dc = _conn.GetContext())
            {
                account = ( from a in dc.Accounts
                            join em in dc.Emails on a.AccountId equals em.AccountId
                            where a.Email.EmailAddress == email
                            select a).FirstOrDefault();
            }

            return account;

        }

我的 Account 类有一个公开电子邮件的 getter/setter:
 public Email Email
        {
            get { return _email; }
            set { _email = value; }
        }

我的电子邮件是一个 LINQ 对象。

我有一种感觉,问题是我正在为我使用 LINQ 对象
属性(property)?我是 LINQ 的新手,并不确定为什么会发生这种情况。

感谢帮助,谢谢...

最佳答案

我认为这就是您所追求的(您需要通过已知的映射直接引用电子邮件地址),但我不能在不知道您的结构的情况下 100% 确定:

            account = (from a in dc.Accounts
                       join em in dc.Emails on a.AccountId equals em.AccountId
                       where em.EmailAddress == email
                       select a).FirstOrDefault();

为什么?部分:
简而言之,LINQ 没有该属性是什么的映射知识……并且无法进行 SQL 查询,因为它不知道,因此当它尝试从表达式树生成查询时,您将收到运行时错误.

您不能在查询中使用属性,除非 LINQ 知道它映射到哪个表/列/函数,否则……它根本无法将其转换为 SQL 或从 SQL 转换。

关于c# - 成员 [class] 不支持转换为 SQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2893646/

相关文章:

c# - 将 HTML 转换为 PDF 发票

asp.net - 如何在 ASP.NET MVC 中将 "active"类添加到 Html.ActionLink

c# - 扩展类型安全以防止脏数据被用于需要 "clean"数据的函数

c# - Linq 中的 DocumentDb 空间距离返回奇怪的结果

c# - ValueTypes 数组不喜欢 object.Equals?

c# - 在列表框中选择项目后打开新表单

javascript - 如何在asp.net中单击按钮下载html文件?

javascript - 将变量传递给函数时出错 javascript 不允许更改 CSS

asp.net - IIS 7 中的另一个 404 页面问题

c# - Linq 按 Sum 分组,但如果 sum 为 null,则返回 0