如果表为空,是否可以使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;
}
答案 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>的