我为项目ID设置了nHibernate限制,如下所示:
shuffle_batch
所以它通过设置限制:
返回具有该项目Id的任何内容string_input_producer
这很有效。我现在想要使用等效的SQL Like添加另一个限制。我试过了:
var attachmentProperties = new System.Collections.Generic.Dictionary<string, object>();
attachmentProperties.Add("Id", this.project.Id);
没有任何论据符合所要求的形式 参数值
我希望获得Type包含&#34; dog&#34; (除了Id匹配)。我该怎么做?
答案 0 :(得分:1)
您有两种选择:
让所有Dog类实现一个通用接口(IDog)。然后,字典将是:
new System.Collections.Generic.Dictionary<string, IDog>();
或者,您可以这样做,这可能有点奇怪,如果您在验证Add方法的某些原因上没有提供顶部的东西。您同样必须检查其他方法。
class DogDictionary : Dictionary<string, object>
{
public virtual void Add(KeyValuePair<string, object> item)
{
if (item.Value.GetType().ToString().ToUpper().Contains("DOG"))
throw new ApplicationException("Invalid Data Type for Value. Should Have 'Dog' in the Object Name");
}
}
我会选择第一个选项。
答案 1 :(得分:0)
另一种方法是为Criteria创建Restrictions.Conjunction
:
Conjunction conjunction = Restrictions.Conjunction();
conjunction.Add(Restrictions.Eq("Id", this.project.Id));
conjunction.Add(Restrictions.Like("Type", "%dog%"));
conjunction.Add(Restrictions.Not(Restrictions.Like("Type", "%cat%")));