C# NHibernate如何手动添加扩展?
我想使用从数据库中动态获取数据。正如在该主题中所解释的,我应该为我的nhibernate配置添加一个扩展 有人能告诉我怎么加那个分机吗 提前谢谢C# NHibernate如何手动添加扩展?,c#,nhibernate,C#,Nhibernate,我想使用从数据库中动态获取数据。正如在该主题中所解释的,我应该为我的nhibernate配置添加一个扩展 有人能告诉我怎么加那个分机吗 提前谢谢 public static class NhTransformers { public static readonly IResultTransformer ExpandoObject; static NhTransformers() { ExpandoObject = new ExpandoObjectRes
public static class NhTransformers
{
public static readonly IResultTransformer ExpandoObject;
static NhTransformers()
{
ExpandoObject = new ExpandoObjectResultSetTransformer();
}
private class ExpandoObjectResultSetTransformer : IResultTransformer
{
public IList TransformList(IList collection)
{
return collection;
}
public object TransformTuple(object[] tuple, string[] aliases)
{
var expando = new ExpandoObject();
var dictionary = (IDictionary<string, object>)expando;
for (int i = 0; i < tuple.Length; i++)
{
string alias = aliases[i];
if (alias != null)
{
dictionary[alias] = tuple[i];
}
}
return expando;
}
}
}
public static class NHibernateExtensions
{
public static IList<dynamic> DynamicList(this IQuery query)
{
return query.SetResultTransformer(NhTransformers.ExpandoObject)
.List<dynamic>();
}
}
-----------------------------------
USE CASE
-----------------------------------
var results = this.session.CreateSQLQuery("select Id, Title, Body from [Posts]")
.DynamicList(); // Secret sauce!
// results are now dynamic!
Console.WriteLine(results[0].Id);
Console.WriteLine(results[0].Name);
// rock on!
最后,我只创建了NhTransformers类并这样做
var query1 = " select * from mySQLView";
var result1 = this.session.CreateSQLQuery(query1).SetResultTransformer(NhTransformers.ExpandoObject)
.List<dynamic>();
foreach (var obj in result1)
{
// some stuff...
}
您所说的手动,我没有尝试过,但应该可以工作。我的意思是,我如何在现有的nhibernate环境中使用/添加此方法。您不需要它,只需将其称为“添加使用”,并且必须工作。