C# Fluent NHibernate删除多个对象
是否有使用Fluent NHibernate删除多个记录的方法 我现在使用此方法删除多个记录C# Fluent NHibernate删除多个对象,c#,nhibernate,fluent-nhibernate,C#,Nhibernate,Fluent Nhibernate,是否有使用Fluent NHibernate删除多个记录的方法 我现在使用此方法删除多个记录 Session.Delete(string.Format("from {0} o where o.RecordCreatedTime > {1}", typeof(Order).Name + "s", DateTime.NowUTC.Date.AddDays(-31)));
Session.Delete(string.Format("from {0} o where o.RecordCreatedTime > {1}",
typeof(Order).Name + "s",
DateTime.NowUTC.Date.AddDays(-31)));
我正在找像这样的东西在流利
Session.Deleted<Order>(o => o.RecordCreatedTime > DateTime.NowUTC.Date.AddDays(-31));
Session.Deleted(o=>o.RecordCreatedTime>DateTime.NowUTC.Date.AddDays(-31));
不,除了传递HQL之外,没有办法删除更多项目。请在此处查看:
public int Delete(string query)
{
using (new SessionIdLoggingContext(SessionId))
{
return Delete(query, NoArgs, NoTypes);
}
}
public int Delete(string query, object value, IType type)
{
using (new SessionIdLoggingContext(SessionId))
{
return Delete(query, new[] {value}, new[] {type});
}
}
上面这两个就叫这个:
public int Delete(string query, object[] values, IType[] types)
{
using (new SessionIdLoggingContext(SessionId))
{
if (string.IsNullOrEmpty(query))
{
throw new ArgumentNullException("query", "attempt to perform delete-by-query with null query");
}
CheckAndUpdateSessionStatus();
if (log.IsDebugEnabled)
{
log.Debug("delete: " + query);
if (values.Length != 0)
{
log.Debug("parameters: " + StringHelper.ToString(values));
}
}
IList list = Find(query, values, types);
int count = list.Count;
for (int i = 0; i < count; i++)
{
Delete(list[i]);
}
return count;
}
}
public int Delete(字符串查询、对象[]值、IType[]类型)
{
使用(新SessionIdLoggingContext(SessionId))
{
if(string.IsNullOrEmpty(查询))
{
抛出新ArgumentNullException(“查询”,“尝试使用空查询按查询执行删除”);
}
CheckAndUpdateSessionStatus();
if(log.IsDebugEnabled)
{
log.Debug(“删除:”+查询);
如果(values.Length!=0)
{
调试(“参数:“+StringHelper.ToString(值));
}
}
IList list=Find(查询、值、类型);
int count=list.count;
for(int i=0;i
事实上,所有这些都会导致一个Find()
并对其进行迭代
解决方案:我们可以创建一些自定义实现。。。采取ICriteria
或QueryOver
。。。并进行迭代