这是我第一次尝试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)。
它真的试图映射方法吗?什么事发生在这里?
答案 0 :(得分:1)
您想要Automap的每个实体都必须具有Id属性,或者从具有Id属性的类继承。你的Person类都没有。
另外,根据我的经验,实体中的所有公共方法都必须声明为虚拟(但如果您急于加载所有内容,则可能不需要这样做。)
答案 1 :(得分:0)
我通过使用界面手动标记每个实体来解决这个问题。
public class MyAutomappingConfiguration : DefaultAutomappingConfiguration
{
public override bool ShouldMap(Type type)
{
return type.GetInterfaces().Contains(typeof (IEntity));
}
}