针对<any>映射的NHibernate标准</any>

时间:2010-02-05 17:03:03

标签: 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.MetaValue("TEAM", typeof(Team))]
public IProjectWorker Worker { get; set; }

现在我需要能够搜索工作者姓名包含一些文本的项目。我最初的反应是这样的:

query
   .CreateAlias("Worker", "Worker")
   .Add(Restrictions.InsensitiveLike("Worker.WorkerName", SearchText, MatchMode.Anywhere));

但这给了我一个错误 - “任何类型都没有唯一的引用持久性”。这是有道理的,它不知道如何处理连接到两个不同的表进行搜索。

我可以为每个表创建两个不同的别名,并在它们之间执行Restrictions.Or()吗?我试过了,但不能完全正确。或者是否有其他方法可以使用我缺少的标准来做到这一点?或者我将不得不使用HQL?

0 个答案:

没有答案