LINQ to Entities不支持指定的类型成员。实体成员和实体导航

时间:2016-01-23 08:34:28

标签: c# entity-framework linq entity-framework-5

public partial class User : IUser
{
    public long ID {get; set;}

    public BaseUser BaseUser
    {
        get
        {
            var context = new Factory().Create<ContextDB>();

            return context.Users.Find(this.ID);
        }
    }
}

var result = _Context.Employees.Where(t => t.User.BaseUser.UserName.ToLower().Trim().Contains(searchKey));

我在这里得到一个例外:

  

指定的类型成员&#39; BaseUser&#39; LINQ to Entities不支持。仅支持初始化程序,实体成员和实体导航属性。

对此有任何解决方案吗?

1 个答案:

答案 0 :(得分:2)

您已撰写 Linq 查询。您正在使用 实体框架 。因此,您正在使用 Linq-To-EntityFramework

.Net会根据您使用的RDMS类型将您的Linq查询转换为数据库查询。 例如,让我们来看看这段代码:

context.Users.Select(x => x.Id == 5);

这将被翻译为:

select * from User where Id=5;

因此,这意味着.net如果无法将其转换为数据库查询,则会抛出异常。例如,您的查询。您已在班级中创建了属性。你是否正在将它转换为数据库查询?怎么样?没有办法!这就是例外的原因。

此外,您的BaseUser财产似乎对我不寻常。如果您已将所有内容配置正确,BaseUser将与User相同。