我有一个项目模型,它的属性类型是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));
我可以为每个表创建两个不同的别名并在它们之间做一个限制。或()?我试过了,但没能完全弄好。或者有没有其他方法来使用我缺少的标准?或者我必须使用HQL来代替?