成员[class]没有受支持的SQL转换

时间:2010-05-23 21:59:43

标签: c# asp.net linq

我收到以下错误:

  

错误消息:成员   'Company.ProductCore.Core.Domain.Account.Email'   没有受支持的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;

        }

我的帐户类有一个公开电子邮件的getter / setter:

 public Email Email
        {
            get { return _email; }
            set { _email = value; }
        }

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

我感觉问题是我正在为我使用LINQ对象电子邮件 属性?我是LINQ的新手,我不确定为什么会这样。

帮助表示感谢,谢谢......

1 个答案:

答案 0 :(得分:2)

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

            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转换。