针对映射的NHibernate标准

针对映射的NHibernate标准,nhibernate,castle-activerecord,Nhibernate,Castle Activerecord,我有一个项目模型,它的属性类型为IProjectWorker,可以是单个用户,也可以是团队。在Castle ActiveRecord中,其定义如下: [Any(typeof(int), MetaType = typeof(string), TypeColumn = "WorkerType", IdColumn = "WorkerID", Cascade = CascadeEnum.None)] [Any.MetaValue("USER", typeof(User))] [Any.MetaValu

我有一个项目模型,它的属性类型为IProjectWorker,可以是单个用户,也可以是团队。在Castle ActiveRecord中,其定义如下:

[Any(typeof(int), MetaType = typeof(string), TypeColumn = "WorkerType", IdColumn = "WorkerID", Cascade = CascadeEnum.None)]
[Any.MetaValue("USER", typeof(User))]
[Any.MetaValue("TEAM", typeof(Team))]
public IProjectWorker Worker { get; set; }
query
   .CreateAlias("Worker", "Worker")
   .Add(Restrictions.InsensitiveLike("Worker.WorkerName", SearchText, MatchMode.Anywhere));
现在我需要能够搜索工作人员姓名中包含一些文本的项目。我最初的反应是这样的:

[Any(typeof(int), MetaType = typeof(string), TypeColumn = "WorkerType", IdColumn = "WorkerID", Cascade = CascadeEnum.None)]
[Any.MetaValue("USER", typeof(User))]
[Any.MetaValue("TEAM", typeof(Team))]
public IProjectWorker Worker { get; set; }
query
   .CreateAlias("Worker", "Worker")
   .Add(Restrictions.InsensitiveLike("Worker.WorkerName", SearchText, MatchMode.Anywhere));
但这给了我一个错误——任何类型都没有唯一的引用持久器。这是有道理的,它不知道如何处理连接到两个不同的表进行搜索


我可以为每个表创建两个不同的别名,并对它们执行限制操作吗?我试过了,但没有完全正确。或者是否有其他方法可以使用我缺少的标准来实现这一点?还是我必须改用HQL?

你有答案吗?你有答案吗?