OK
So I added these two methods:
<code>
private ISQLQuery AddScalarValues(ISQLQuery query, Type type)
{
var info = type.GetProperties();
foreach (var propertyInfo in info)
{
query.AddScalar(propertyInfo.Name, GetType(propertyInfo));
}
return query;
}
private NHibernate.Type.IType GetType(PropertyInfo propertyInfo)
{
switch (propertyInfo.PropertyType.FullName)
{
case "System.String":
return NHibernateUtil.String;
case "System.Decimal":
return NHibernateUtil.Decimal;
case "System.Int32":
return NHibernateUtil.Int32;
case "System.Guid":
return NHibernateUtil.Guid;
}
return null;
}
</code>
And now it works fine!!
woohoo
thanks :)
On Mon, Sep 14, 2009 at 3:53 PM, Fabio Maulo <[email protected]> wrote:
> with SQL yes, with HQL or Criteria you can do the same without AddScalar...
> why ?
> because HQL and Criteria are OO and when you specify a property NH can know
> which is the type expected.
> NH need to know what you are going to retrieve...
>
>
> 2009/9/14 Wayne Douglas <[email protected]>
>>
>> Hi
>>
>> I'm trying to get a list of unmanaged entities through calling an SP
>> through NHibernate.
>>
>> from 15.1.5. Returning non-managed entities in the docs - I should
>> just be able to:
>>
>> <code>
>>
>> sess.CreateSQLQuery("SELECT NAME, BIRTHDATE FROM CATS")
>> .SetResultTransformer(Transformers.AliasToBean(typeof(CatDTO)))
>>
>> </code>
>>
>> here's the actual code I'm trying to get working - this is a minimal
>> complexity example:
>>
>> <code>
>>
>> string sql =
>> "SELECT CurrentMonthBudget, Commitment FROM dbo.Balance";
>> IList<BudgetManager> x = Session.Session
>> .CreateSQLQuery(sql)
>>
>>
>> .SetResultTransformer(Transformers.AliasToBean(typeof(BudgetManager))).List<BudgetManager>();
>>
>> </code>
>>
>> which doesn't even nearly work :(
>>
>> After doing some reading/googling I managed to find that I might
>> supposed to be doing this:
>>
>> <code>
>>
>> string sql =
>> "SELECT CurrentMonthBudget, Commitment FROM dbo.Balance";
>> IList<BudgetManager> x = Session.Session
>> .CreateSQLQuery(sql)
>> .AddScalar("CurrentMonthBudget",
>> NHibernate.NHibernateUtil.Decimal)
>> .AddScalar("Commitment", NHibernate.NHibernateUtil.Decimal)
>>
>>
>> .SetResultTransformer(Transformers.AliasToBean(typeof(BudgetManager))).List<BudgetManager>();
>>
>> </code>
>>
>> Is the AddScalar necessary for every return column?
>>
>> The names on my entity are the same as the column names being returned
>> - it kinda hints from the example in the docs that this is all infered
>> and AddScalar is only needed if the names are different.
>>
>>
>>
>> Cheers,
>>
>> w://
>>
>>
>
>
>
> --
> Fabio Maulo
>
> >
>
--
Cheers,
w://
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"nhusers" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/nhusers?hl=en
-~----------~----~----~----~------~----~------~--~---