我有一种有趣的感觉,这只是我对 nHibernate 和 Fluent nHibernate 的理解。
我有一个小型控制台应用程序,它基于一堆实体类导出模式。在我这样做之前,一切都很好:
public virtual int UserId { get; set; }
public virtual string FirstName { get; set; }
public virtual string LastName { get; set; }
public virtual string Email { get; set; }
public virtual UserType UserType { get; set; }
public virtual Client Client { get; set; }
public virtual string UniqueIdentifier { get; set; }
public virtual IList<UserAttribute> UserAttributes { get; set; }
/** CODE IN QUESTION **/
public virtual string GetAttributeValue(string name)
{
var value = UserAttributes.FirstOrDefault(ua => ua.AttributeDefinition.AttributeName == name);
if (value != null)
return value.Value;
else
return string.Empty;
}
如果我注释掉这个函数,一切都会很好。即使我只有函数返回 string.Empty,一切正常。但是,一旦我添加回该行:
var value = UserAttributes.FirstOrDefault(ua => ua.AttributeDefinition.AttributeName == name);
一切都因此错误而中断:
"The entity '<>c__DisplayClass1' doesn't have an Id mapped. Use the Id method to map your identity property. For example: Id(x => x.Id)."
我正在使用自动映射。这个错误的原因是什么?我通常理解错误,但看起来它在匿名类上失败了。我只是对这一切应该如何协同工作有一个严重的误解吗?我绝对是一个 nHibernate 新手,无论是在实践上还是在哲学上。我很想开悟!