NHibernate准则问题
我在hibernate中有一个查询,如下所示:NHibernate准则问题,nhibernate,Nhibernate,我在hibernate中有一个查询,如下所示: string[] NewsId = new string[] {"ABC","DEF","GHI"}; public IEnumerable<News> NewsSelected(string[] NewsId) { List<ICriterion> criteria = new List<ICriterion>(); criteria.Add(Restrictions
string[] NewsId = new string[] {"ABC","DEF","GHI"};
public IEnumerable<News> NewsSelected(string[] NewsId)
{
List<ICriterion> criteria = new List<ICriterion>();
criteria.Add(Restrictions.In("Id", NewsId));
var results = _repository.GetByCriteria(criteria);
return results;
}
string[]NewsId=新字符串[]{“ABC”、“DEF”、“GHI”};
公共IEnumerable NewsSelected(字符串[]NewsId)
{
列表条件=新列表();
标准.添加(限制.In(“Id”,NewsId));
var results=\u repository.GetByCriteria(标准);
返回结果;
}
它返回零,但是
public IEnumerable<News> NewsSelected(string[] NewsId)
{
List<ICriterion> criteria = new List<ICriterion>();
criteria.Add(Restrictions.In("Id", new[]{"ABC","DEF","GHI"}));
var results = _repository.GetByCriteria(criteria);
return results;
}
public IEnumerable NewsSelected(字符串[]NewsId)
{
列表条件=新列表();
标准.增加(限制.在(“Id”,新的[]{“ABC”,“DEF”,“GHI”}));
var results=\u repository.GetByCriteria(标准);
返回结果;
}
工作完美。这里缺少什么?您需要将查询参数复制到一个局部变量,如下所示:
string[] NewsId = new string[] {"ABC","DEF","GHI"};
public IEnumerable<News> NewsSelected(string[] NewsId)
{
var newsId = NewsId;
List<ICriterion> criteria = new List<ICriterion>();
criteria.Add(Restrictions.In("Id", newsId));
var results = _repository.GetByCriteria(criteria);
return results;
}
string[]NewsId=新字符串[]{“ABC”、“DEF”、“GHI”};
公共IEnumerable NewsSelected(字符串[]NewsId)
{
var newsId=newsId;
列表条件=新列表();
标准.添加(限制.In(“Id”,newsId));
var results=\u repository.GetByCriteria(标准);
返回结果;
}
在第一个代码段中,谁调用了newselected
,并使用了哪些参数?函数上面的定义应该是静态数组声明吗?在第二个代码段中,如果没有在任何地方使用,为什么会有一个NewsId
参数?因此,在调试器的第一个实例中,NewsId包含与第二个代码段中完全相同的数据?调用第一个函数的方式肯定有问题。