当表为空时,流畅的nhibernate返回列表?

时间:2014-08-06 17:08:06

标签: c# nhibernate fluent-nhibernate fluent

如果表为空,是否可以使FNH返回具有默认值的列?

这是我的代码示例,它通过名称获取数据库实体:

    private IList<T> GetDictionaryListByName<T>(string dictionaryName)
    {
        IList<T> result = new T[0];
        using (var session = DbManager.SessionFactory.OpenSession())
        {
            result = session.QueryOver<IDictionary>(dictionaryName).List<T>();
        }

        return result;
    }

1 个答案:

答案 0 :(得分:0)

如果QueryOver返回空结果,我们只能返回一个包含new T()的新列表。我们只需要进行一些调整:

private IList<T> GetDictionaryListByName<T>(string dictionaryName)
    where T : new() // passed T must have parameterless consctructor
{
    using (var session = DbManager.SessionFactory.OpenSession())
    {
        var result = session
             .QueryOver<IDictionary>(dictionaryName)
             .List<T>();

        if(result.Any())   // if there is any result 
        {
            return result; // return that list
        }
    }

    return new List<T> {new T() }; // return new List with new T()
}

如果您想获得有关T映射的更多信息,请查看您的问题的答案(我们可以使用AbstractEntityPersister获取列名...)< / em>的