我有一个方法可以返回建议订单的列表。如果用户传递空值,则忽略该条件。
public IList<SuggestedOrderItem> GetSuggestedOrderItemByCriteria
(
int? itemNumber,
int? deptNumber
)
{
try
{
NHibernate.ICriteria criteria = NHibernateSession.CreateCriteria(typeof(Core.SuggestedOrderItem));
if (itemNumber.HasValue)
criteria.CreateCriteria("Item", "Item").Add(Expression.Eq("Item.ItemNumber", itemNumber.Value));
if (deptNumber.HasValue)
criteria.CreateCriteria("Item.Department", "Department").Add(Expression.Eq("Department.DepartmentNumber", deptNumber.Value));
return criteria.List<Core.SuggestedOrderItem>();
}
catch (NHibernate.HibernateException he)
{
DataAccessException dae = new DataAccessException("NHibernate Exception", he);
throw dae;
}
}
如果我提供一个标准,一切正常。我的意思是它检索正确的建议订单,它们都有不同的版本号。如果所有条件都为空,它将检索所有建议的订单,但版本号都是相同的。另一个开发人员正在处理UI,他正在调用上面的方法来填充包含所有订单的屏幕,以便用户可以选择要修改的订单。当我收到他的更新请求时,尽管我拒绝了它,因为版本号与对象的实际版本不匹配。以下是“版本”列在映射文件中的外观:
<version name="Version" type="Int64" generated="always" column="ORA_ROWSCN" access="property" unsaved-value="0"/>
更新: