2010-08-28 55 views
2

我已经有一个多被定义为一个属性的类如下麻烦:经与NHibernate和多对一性质

[NHMA.ManyToOne(Name = "TypeOfEvent", ClassType = typeof(EventType), Column="EventTypeId")] 
public virtual EventType TypeOfEvent {get; set;} 

每次我尝试使用简单的查询(只是加载所有事件的加载类在数据库中)我得到以下异常:

NHibernate.HibernateException: 创建代理实例失败
----> System.Reflection.AmbiguousMatchException :暧昧MATC h发现。

Event表具有与EventType表的主键EventTypeId相关的外键(EventTypeId)。如果我将映射更改为int,则一切正常。

我意识到这可能是一个非常简单的事情,但Google搜索并没有帮助。帮帮我。请。

+0

是否可以在多个名称空间中定义“EventType”,并且您需要在某处完全限定类名? – Tahbaza 2010-08-28 03:51:26

回答

0

我不认为你需要设置ManyToOne属性Name属性。

我在过去的项目中使用什么被简单地:

[ManyToOne(Column = "TypeOfEvent", 
      ClassType = typeof(EventType), 
      NotNull = ??)] // Set as appropriate 
public virtual EventType TypeOfEvent { get; set; } 

正如评论者提到的,如果您添加其他命名该文件,该EventType类可能是不明确;然而,如果是的话,你应该得到一个编译器错误。

这是一个新项目,还是这是您尝试加载的第一种类型的实体?你以前在这个项目中成功创建过任何其他ManyToOne映射吗?