我有一个类,具有如下定义的多对一属性:
[NHMA.ManyToOne(Name = "TypeOfEvent", ClassType = typeof(EventType), Column="EventTypeId")]
public virtual EventType TypeOfEvent {get; set;}
每次尝试使用简单查询(仅加载数据库中的所有事件)加载类时,都会收到以下异常:
NHibernate.HibernateException:
创建代理实例失败
----> System.Reflection.AmbiguousMatchException
:发现模糊匹配。
事件表具有与事件类型表的主键EventTypeId相关的外键(EventTypeId)。如果我将映射更改为int,则一切正常。
我意识到这可能是一件非常简单的事情,但是四处搜寻并没有帮助。救命。请。
最佳答案
我认为您不需要在Name
属性上设置ManyToOne
属性。
我在过去的项目中使用的只是:
[ManyToOne(Column = "TypeOfEvent",
ClassType = typeof(EventType),
NotNull = ??)] // Set as appropriate
public virtual EventType TypeOfEvent { get; set; }
正如评论者所提到的,如果您已经向该文件添加了其他命名空间,则
EventType
类可能是模棱两可的。但是,如果是这样,应该会出现编译器错误。这是一个新项目,还是您要加载的第一类实体?您是否已经在此项目之前成功创建了其他
ManyToOne
映射?