此查询有什么问题:
var user = context.Users.Single(u => u.UserPrincipalName == "test@company.l");
为什么我会得到这个例外?
UserPrincipleName是用户属性...
System.NotSupportedException: The specified type member 'UserPrincipalName' is not supported in LINQ to Entities. Only initializers, entity members, and entity navigation properties are supported.
当我这样做时一切都很好:
var users = context.Users.ToList();
var user = users.Single(u => u.UserPrincipalName == "test@company.l");
为什么单个Linq对象而不是Linq to Entities?
答案 0 :(得分:0)
UserPrincipalName
映射到数据库中的列。 EF尝试将lambda表达式u => u.UserPrincipalName == "test@company.l"
转换为sql脚本,如果UserPrincipalName
属性未映射到表列,则会抱怨。
答案 1 :(得分:0)
如果这是IdentityElement的属性,则定义如下:
[ConfigurationProperty(ConfigurationStrings.UserPrincipalName)]
public UserPrincipalNameElement UserPrincipalName
{
get { return (UserPrincipalNameElement)base[ConfigurationStrings.UserPrincipalName]; }
}
它返回一个字符串,这就是为什么你可以将它与linq一起用于对象,但是EF不能将它转换为SQL,因为它通过在基类中转换一些属性来获取值。