我有一个类,具有如下定义的多对一属性:

[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映射?

10-08 19:42