gpt4 book ai didi

nhibernate - 流利的 nhibernate 无法在函数上正确生成模式

转载 作者:行者123 更新时间:2023-12-01 00:31:01 26 4
gpt4 key购买 nike

我有一种奇怪的感觉,这只是我对 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;
}

如果我注释掉这个函数,一切都很好。即使我只有函数 return 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 新手,无论是在实践上还是在哲学上。我很想开悟!

最佳答案

lambda ua => ua.AttributeDefinition.AttributeName == name 生成一个内部类来捕获 name 参数。 automapper 遍历每种类型并尝试映射它,不幸的是,它也选择了编译器生成的类型。

您可以实现一个 AutomappingConfiguration 来排除编译器生成的类

class MyAutomappingConfiguration : DefaultAutomappingConfiguration
{
public override bool ShouldMap(Type type)
{
return !type.IsDefined(typeof(CompilerGeneratedAttribute), false) && base.ShouldMap(type);
}
}

关于nhibernate - 流利的 nhibernate 无法在函数上正确生成模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11446155/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com