Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/270.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# NHibernate如何手动添加扩展?_C#_Nhibernate - Fatal编程技术网

C# NHibernate如何手动添加扩展?

C# NHibernate如何手动添加扩展?,c#,nhibernate,C#,Nhibernate,我想使用从数据库中动态获取数据。正如在该主题中所解释的,我应该为我的nhibernate配置添加一个扩展 有人能告诉我怎么加那个分机吗 提前谢谢 public static class NhTransformers { public static readonly IResultTransformer ExpandoObject; static NhTransformers() { ExpandoObject = new ExpandoObjectRes

我想使用从数据库中动态获取数据。正如在该主题中所解释的,我应该为我的nhibernate配置添加一个扩展

有人能告诉我怎么加那个分机吗

提前谢谢

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环境中使用/添加此方法。您不需要它,只需将其称为“添加使用”,并且必须工作。