流畅的NHibernate:实体'(方法名称)'没有Id映射。

时间:2012-02-06 19:18:45

标签: fluent-nhibernate automapping

这是我第一次尝试Fluent NHibernate和Auto mapping。不幸的是,我遇到了一个我无法解决的问题。我收到一条错误,说我的某个类上的某个方法无法映射。

public class Person 
{
   public IEnumerable<string> GetStuff(){return stuff;}
}

异常消息是:

The entity '<GetStuff>d__0' doesn't have an Id mapped.

我甚至尝试添加IAutoMappingOverride来忽略该方法(使用map.IgnoreProperty)。

它真的试图映射方法吗?什么事发生在这里?

2 个答案:

答案 0 :(得分:1)

您想要Automap的每个实体都必须具有Id属性,或者从具有Id属性的类继承。你的Person类都没有。

另外,根据我的经验,实体中的所有公共方法都必须声明为虚拟(但如果您急于加载所有内容,则可能不需要这样做。)

答案 1 :(得分:0)

我通过使用界面手动标记每个实体来解决这个问题。

public class MyAutomappingConfiguration : DefaultAutomappingConfiguration
{
    public override bool ShouldMap(Type type)
    {
        return type.GetInterfaces().Contains(typeof (IEntity));
    }
}