我有一個人對象,它可以有無限數量的名字。所以名字是另一個對象。NHibernate標準問題
即
人---名
---名
---名
我想要做的是寫使用它的禁止查詢會讓我成爲具有某些名字的人。
所以一個查詢可能會找到名字是alison和jane和philippa的人,那麼下一個查詢可能是一個查找名字是alison和jane的人。
我只想返回具有所有搜索名稱的人。到目前爲止,我已經有
ICriteria criteria = session.CreateCriteria(typeof (Person));
criteria.CreateAlias("Names", "name");
ICriterion expression = null;
foreach (string name in namesToFind)
{
if (expression == null)
{
expression = Expression.Like("name.Value", "%" + name + "%");
}
else
{
expression = Expression.Or(
expression,
Expression.Like("name.Value", "%" + name + "%"));
}
}
if (expression != null)
criteria.Add(expression);
但是,這是返回每個人與我正在尋找的任何名稱,而不是所有的名稱。
任何人都可以幫我解決這個問題嗎?謝謝!
那麼,你得到的SQL WHERE名稱LIKE「%簡%」和名稱,如「%菲利帕%」,這不真的有道理嗎? – 2010-05-17 16:44:45
這個名字必須是「philippa jane」或者「jane philippa」才能發揮作用 - 不是「jane」的名字和「philippa」的名字...... – 2010-05-17 16:45:49
好的。我必須學會更仔細地閱讀。我已經更新了答案,以反映你的SQL以上。 – asgerhallas 2010-05-17 21:11:41