Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/340.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Fluent NHibernate删除多个对象_C#_Nhibernate_Fluent Nhibernate - Fatal编程技术网

C# 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)));

是否有使用Fluent NHibernate删除多个记录的方法

我现在使用此方法删除多个记录

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之外,没有办法删除更多项目。请在此处查看:

HQL查询有3个重载

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
。。。并进行迭代