Ok I am trying this out but with little success. I have a class defined as
follows:
public class AccountSummary
{
public AccountSummary()
{}
public AccountSummary(string accountnumber, string accountname,
decimal creditamount, decimal debitamount, DateTime dateposted)
{
AccountNumber = accountnumber;
AccountName = accountname;
CreditAmount = creditamount;
DebitAmount = debitamount;
DatePosted = dateposted;
}
public virtual Account Account { get; set; }
public virtual string AccountNumber
{ get; set; }
public virtual string AccountName
{
get; set;
}
public virtual Decimal CreditAmount { get; set; }
public virtual Decimal DebitAmount { get; set; }
public virtual DateTime DatePosted { get; set; }
}
Then I have an import map for it:
<import class="AccountSummary, AccountingManager.Model"/>
Finally I have an HQL query like this:
var query = "select new AccountSummary(a.Number, a.Name , sum(e.Amount * (1
- e.IsDebit)), sum(e.Amount * e.IsDebit) , e.DatePosted) " +
"from Entry as e " +
"join e.Account as a " +
Where +
"group by a.Number, a.Name, e.IsDebit,
e.DatePosted";
var hql = session.CreateQuery(query);
return hql.Future<AccountSummary>();
Just to explain what I am doing (which could be my problem) I am multiplying
Amount by IsDebit which is a boolean to get two sums one for debits and one
for credits.
I get this error:
System.TypeLoadException: Could not load type 'AccountSummary' from
assembly 'AccountingManager.Model, Version=1.0.0.0, Culture=neutral,
PublicKeyToken=null'.
at System.Reflection.Assembly._GetType(String name, Boolean throwOnError,
Boolean ignoreCase)
at System.Reflection.Assembly.GetType(String name, Boolean throwOnError)
at NHibernate.Util.ReflectHelper.TypeFromAssembly(AssemblyQualifiedTypeName
name, Boolean throwOnError)
at NHibernate.Util.ReflectHelper.ClassForName(String name)
at NHibernate.Hql.Ast.ANTLR.Tree.ConstructorNode.ResolveConstructor(String
path)
I understand this type of error can occur when the constructor types don't
match the query output. Do I need to cast the query output somehow or did I
do something completely wrong?
Thanks for your help,
Chris
On Tue, Jun 9, 2009 at 11:12 AM, Fabio Maulo <[email protected]> wrote:
> probably is not support by actual implementation of Linq2NH.btw using
> <import> you can "map" you DTO (AccountTake).
>
> 2009/6/9 Chris Nicola <[email protected]>
>
> I am trying this as a Linq query:
>>
>> var query = from entry in entryquery
>> group entry by entry.Account into list
>> select new AccountTake
>> {
>> Account = list.Key,
>> CreditAmount = list.Sum(p => p.Amount),
>> DebitAmount = list.Sum(p => p.Amount)
>> };
>>
>> And this is the resulting SQL
>>
>> SELECT sum(this_.Amount) as y0_,
>> sum(this_.Amount) as y1_
>> FROM Entries this_
>>
>> Seems to be ignoring group by. Obviously this returns an exception as it
>> can't map that to AccountTake.
>>
>> Chris
>>
>> On Wed, Jun 3, 2009 at 3:53 PM, Fabio Maulo <[email protected]> wrote:
>>
>>> Not with anonymous type but with a real Type or a IList<object[]>
>>>
>>> 1)select e.Key, sum(e.Amount) from Entry e group by e.Key
>>> 2)select new YourStatisticEntry(e.Key, sum(e.Amount)) from Entry e group
>>> by e.Key
>>> 3) using 1 with a results trasformer to transform each result or the
>>> entirely IList.
>>>
>>> 2009/5/28 Chris Nicola <[email protected]>
>>>
>>> I was wondering if it is possible to do simple sums and groupings with
>>>> Linq2Nhibernate without returning the entire result set first using
>>>> .ToList();
>>>>
>>>> My scenario:
>>>>
>>>> I have a table of accounts, and for each and every account I would like
>>>> to get a sum of transactions from three different tables. In SQL I would
>>>> do
>>>> something like
>>>>
>>>> SELECT SUM(Amount), Account.id
>>>> FROM Entries
>>>> Group By Account.id
>>>>
>>>> In a Linq query I might try to return something like:
>>>>
>>>> from entry in session.Linq<Entry>()
>>>> group entry by entry.Account into list
>>>> select new
>>>> {
>>>> Account = list.Key,
>>>> Total = list.Sum(e => e.Amount)
>>>> };
>>>>
>>>> However that returns an error because nHibernate is expecting to return
>>>> entities of type <Entry> and not the anonymous type I just defined.
>>>>
>>>> Is there any way to get results like this?
>>>>
>>>> Thanks,
>>>> Chris
>>>>
>>>>
>>>>
>>>
>>>
>>> --
>>> Fabio Maulo
>>>
>>>
>>>
>>
>>
>>
>
>
> --
> Fabio Maulo
>
> >
>
--~--~---------~--~----~------------~-------~--~----~
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
-~----------~----~----~----~------~----~------~--~---