Nhibernate Castle活动记录无法初始化

Nhibernate Castle活动记录无法初始化,nhibernate,castle-activerecord,Nhibernate,Castle Activerecord,我正在实施一个相对简单的用户管理模型,使用Castle Active Record,在MySql之上使用NHibernate,我遇到了一个问题。 比如说,我有两个表,即下面的SQL create语句描述的用户和密码 CREATE TABLE _users ( id bigint(20) NOT NULL AUTO_INCREMENT, username char(32) NOT NULL, PRIMARY KEY (id), UNIQUE KEY username_UQ (us

我正在实施一个相对简单的用户管理模型,使用Castle Active Record,在MySql之上使用NHibernate,我遇到了一个问题。

比如说,我有两个表,即下面的SQL create语句描述的用户和密码

CREATE TABLE _users ( id bigint(20) NOT NULL AUTO_INCREMENT, username char(32) NOT NULL, PRIMARY KEY (id), UNIQUE KEY username_UQ (username), ) ENGINE=InnoDB DEFAULT CHARSET=utf8; CREATE TABLE _passwords ( id bigint(20) NOT NULL AUTO_INCREMENT, creation_date datetime NOT NULL, user_id bigint(20) NOT NULL, password_hash char(64) NOT NULL, valid_end_date datetime NOT NULL, PRIMARY KEY (id), UNIQUE KEY user_id_password_UQ (user_id,password_hash), KEY user_passwords_FK (user_id), CONSTRAINT user_passwords_FK FOREIGN KEY (user_id) REFERENCES _users (`id`) ON DELETE NO ACTION ON UPDATE NO ACTION ) ENGINE=InnoDB DEFAULT CHARSET=utf8; 最后,当此代码运行时,将生成以下异常:

Castle.ActiveRecord.Framework.ActiveRecordException: ActiveRecord tried to infer details about the relation User.Passwords but it could not find a 'BelongsTo' mapped property in the target type DataEntities.Password at Castle.ActiveRecord.Framework.Internal.SemanticVerifierVisitor.VisitHasMany(HasManyModel model) in c:\daten\dev\External\Castle\AR2.0\ActiveRecord\Castle.ActiveRecord\Framework\Internal\Visitors\SemanticVerifierVisitor.cs:line 544 at Castle.ActiveRecord.Framework.Internal.AbstractDepthFirstVisitor.VisitNodes(IEnumerable nodes) in c:\daten\dev\External\Castle\AR2.0\ActiveRecord\Castle.ActiveRecord\Framework\Internal\Visitors\AbstractDepthFirstVisitor.cs:line 45 at Castle.ActiveRecord.Framework.Internal.AbstractDepthFirstVisitor.VisitModel(ActiveRecordModel model) in c:\daten\dev\External\Castle\AR2.0\ActiveRecord\Castle.ActiveRecord\Framework\Internal\Visitors\AbstractDepthFirstVisitor.cs:line 59 at Castle.ActiveRecord.Framework.Internal.SemanticVerifierVisitor.VisitModel(ActiveRecordModel model) in c:\daten\dev\External\Castle\AR2.0\ActiveRecord\Castle.ActiveRecord\Framework\Internal\Visitors\SemanticVerifierVisitor.cs:line 122 at Castle.ActiveRecord.Framework.Internal.AbstractDepthFirstVisitor.VisitNodes(IEnumerable nodes) in c:\daten\dev\External\Castle\AR2.0\ActiveRecord\Castle.ActiveRecord\Framework\Internal\Visitors\AbstractDepthFirstVisitor.cs:line 45 at Castle.ActiveRecord.ActiveRecordStarter.RegisterTypes(ISessionFactoryHolder holder, IConfigurationSource source, IEnumerable`1 types, Boolean ignoreProblematicTypes) in c:\daten\dev\External\Castle\AR2.0\ActiveRecord\Castle.ActiveRecord\Framework\ActiveRecordStarter.cs:line 927 at Castle.ActiveRecord.ActiveRecordStarter.Initialize(IConfigurationSource source, Type[] types) in c:\daten\dev\External\Castle\AR2.0\ActiveRecord\Castle.ActiveRecord\Framework\ActiveRecordStarter.cs:line 202 at Global.Application_Start(Object sender, EventArgs e) in C:\Projects Code\xyz\Global.asax.cs:line 22 Castle.ActiveRecord.Framework.ActiveRecordException:ActiveRecord试图推断有关关系用户的详细信息。密码,但在目标类型DataEntities中找不到“BelongsTo”映射属性。密码 在c:\daten\dev\External\Castle\AR2.0\ActiveRecord\Castle.ActiveRecord\Framework\Internal.SemanticVerifierVisitor.visitasmany(HasManyModel模型)中的Castle.ActiveRecord.Framework\Internal\Visitors\SemanticVerifierVisitor.cs:544行 位于c:\daten\dev\External\Castle\AR2.0\ActiveRecord\Castle.ActiveRecord\Framework\Internal\Visitors\AbstractDepthFirstVisitor.VisitNodes(IEnumerable节点)中的Castle.ActiveRecord.Framework.Internal.AbstractDepthFirstVisitor.cs:第45行 位于c:\daten\dev\External\Castle\AR2.0\ActiveRecord\Castle.ActiveRecord\Framework.Internal.AbstractDepthFirstVisitor.VisitModel(ActiveRecordModel模型)中的Castle.ActiveRecord.Framework.Internal\Visitors\AbstractDepthFirstVisitor.cs:第59行 位于c:\daten\dev\External\Castle\AR2.0\ActiveRecord\Castle.ActiveRecord\Framework\Internal.SemanticVerifierVisitor.VisitModel(ActiveRecordModel模型)中的Castle.ActiveRecord.Framework\Internal\Visitors\SemanticVerifierVisitor.cs:第122行 位于c:\daten\dev\External\Castle\AR2.0\ActiveRecord\Castle.ActiveRecord\Framework\Internal\Visitors\AbstractDepthFirstVisitor.VisitNodes(IEnumerable节点)中的Castle.ActiveRecord.Framework.Internal.AbstractDepthFirstVisitor.cs:第45行 在c:\daten\dev\External\Castle\AR2.0\ActiveRecord\Castle.ActiveRecord\Framework\ActiveRecordStarter.cs中的Castle.ActiveRecordStarter.RegisterTypes(ISessionFactoryHolder holder,IConfigurationSource,IEnumerable`1类型,布尔ignoreProblematicTypes)中 在c:\daten\dev\External\Castle\AR2.0\ActiveRecord\Castle.ActiveRecord\Framework\ActiveRecordStarter.cs中初始化(IConfigurationSource source,Type[]types):第202行 在C:\Projects Code\xyz\Global.asax.cs中的Global.Application_启动(对象发送方,事件参数e):第22行 嗯,我一直盯着
Password
类的
UserId
属性,我在谷歌上搜索过,现在我完全迷路了。所以社区是我最后的希望。。。有谁能帮助我了解导致此异常的原因以及如何修复它


提前感谢您的回复和评论。

您应该有一个
用户{get;set;}
引用属性,而不是外键

这是一个很好的起点

try
{
    ActiveRecordStarter.Initialize(ActiveRecordSectionHandler.Instance, typeof(Password),
                                                                        typeof(User));
}
catch (Exception l_excpt)
{
    // handle exception
}
Castle.ActiveRecord.Framework.ActiveRecordException: ActiveRecord tried to infer details about the relation User.Passwords but it could not find a 'BelongsTo' mapped property in the target type DataEntities.Password at Castle.ActiveRecord.Framework.Internal.SemanticVerifierVisitor.VisitHasMany(HasManyModel model) in c:\daten\dev\External\Castle\AR2.0\ActiveRecord\Castle.ActiveRecord\Framework\Internal\Visitors\SemanticVerifierVisitor.cs:line 544 at Castle.ActiveRecord.Framework.Internal.AbstractDepthFirstVisitor.VisitNodes(IEnumerable nodes) in c:\daten\dev\External\Castle\AR2.0\ActiveRecord\Castle.ActiveRecord\Framework\Internal\Visitors\AbstractDepthFirstVisitor.cs:line 45 at Castle.ActiveRecord.Framework.Internal.AbstractDepthFirstVisitor.VisitModel(ActiveRecordModel model) in c:\daten\dev\External\Castle\AR2.0\ActiveRecord\Castle.ActiveRecord\Framework\Internal\Visitors\AbstractDepthFirstVisitor.cs:line 59 at Castle.ActiveRecord.Framework.Internal.SemanticVerifierVisitor.VisitModel(ActiveRecordModel model) in c:\daten\dev\External\Castle\AR2.0\ActiveRecord\Castle.ActiveRecord\Framework\Internal\Visitors\SemanticVerifierVisitor.cs:line 122 at Castle.ActiveRecord.Framework.Internal.AbstractDepthFirstVisitor.VisitNodes(IEnumerable nodes) in c:\daten\dev\External\Castle\AR2.0\ActiveRecord\Castle.ActiveRecord\Framework\Internal\Visitors\AbstractDepthFirstVisitor.cs:line 45 at Castle.ActiveRecord.ActiveRecordStarter.RegisterTypes(ISessionFactoryHolder holder, IConfigurationSource source, IEnumerable`1 types, Boolean ignoreProblematicTypes) in c:\daten\dev\External\Castle\AR2.0\ActiveRecord\Castle.ActiveRecord\Framework\ActiveRecordStarter.cs:line 927 at Castle.ActiveRecord.ActiveRecordStarter.Initialize(IConfigurationSource source, Type[] types) in c:\daten\dev\External\Castle\AR2.0\ActiveRecord\Castle.ActiveRecord\Framework\ActiveRecordStarter.cs:line 202 at Global.Application_Start(Object sender, EventArgs e) in C:\Projects Code\xyz\Global.asax.cs:line 22