nHibernate 标准 ResultTransformer 不工作
nHibernate criteria ResultTransformer not working
我有(长而复杂的)查询,基于标准。
以下代码:
//....
var myList = criteria.List<MyEntity>()
工作正常,但它 return 包含 50 个完整实体的列表。出于性能原因,我想为我的查询应用投影。以下代码也可以正常工作:
criteria.SetProjection(
Projections.ProjectionList()
.Add(Projections.Property("Id"))
.Add(Projections.Property("Numer")));
var objList = criteria.List<Object[]>()
它 return 包含 50 个数组的集合,每个数组包含 2 个对象,我可以通过索引访问它们。
我想通过它的名字访问个别属性,所以我写了下面的代码:
criteria.SetProjection(
Projections.ProjectionList()
.Add(Projections.Property("Id"))
.Add(Projections.Property("Numer")));
var myList = criteria.SetResultTransformer(Transformers.AliasToEntityMap).List<Hashtable>();
var myElement = myList[0]["Id"];
据我在网上看到的,应该return字典列表。
但是:
- myList 包含 50 个空项目
- myElement 为空。
我做错了什么?
这里的技巧是:转换为 key
/value
字典...需要 alias。
让我们像这样调整投影:
criteria.SetProjection(
Projections.ProjectionList() // Alias
.Add(Projections.Property("Id") .As("Id"))
.Add(Projections.Property("Numer").As("Number"));
剩下的就可以了...
我有(长而复杂的)查询,基于标准。
以下代码:
//....
var myList = criteria.List<MyEntity>()
工作正常,但它 return 包含 50 个完整实体的列表。出于性能原因,我想为我的查询应用投影。以下代码也可以正常工作:
criteria.SetProjection(
Projections.ProjectionList()
.Add(Projections.Property("Id"))
.Add(Projections.Property("Numer")));
var objList = criteria.List<Object[]>()
它 return 包含 50 个数组的集合,每个数组包含 2 个对象,我可以通过索引访问它们。 我想通过它的名字访问个别属性,所以我写了下面的代码:
criteria.SetProjection(
Projections.ProjectionList()
.Add(Projections.Property("Id"))
.Add(Projections.Property("Numer")));
var myList = criteria.SetResultTransformer(Transformers.AliasToEntityMap).List<Hashtable>();
var myElement = myList[0]["Id"];
据我在网上看到的,应该return字典列表。
但是: - myList 包含 50 个空项目 - myElement 为空。
我做错了什么?
这里的技巧是:转换为 key
/value
字典...需要 alias。
让我们像这样调整投影:
criteria.SetProjection(
Projections.ProjectionList() // Alias
.Add(Projections.Property("Id") .As("Id"))
.Add(Projections.Property("Numer").As("Number"));
剩下的就可以了...