Hmmm, further trials and tribulations. While I know this is a new feature, it appears the .Future<T>() is causing some headaches. If I just do .List I am getting the correct results (yay!) which is a list of AccountSummary objects but if I use .Future<AccountSummary>() I get this exception:
The value "System.Object[]" is not of type "AccountingManager.Model.AccountSummary" and cannot be used in this generic collection. Parameter name: value This happens when the results are enumerated. There are three similar queries which I would ideally like to execute all at once if possible. Thanks, Chris On Tue, Jun 16, 2009 at 12:31 PM, Chris Nicola <[email protected]> wrote: > <3 you guys are awesome in so many ways! Can't believe I didn't notice > that, think I was working a little to long yesterday ;P. > > > On Tue, Jun 16, 2009 at 5:51 AM, Mitjast <[email protected]>wrote: > >> >> Try this..... >> >> <import class="AccountingManager.Model.AccountSummary, >> AccountingManager.Model" Rename="AccountSummary"/> >> >> In my case hql worked... >> >> >> On Jun 16, 3:33 am, Fabio Maulo <[email protected]> wrote: >> > mmm..... I think you are forgetting something... no?for example... what >> > about the FullName of the class ? >> > where is the name space ? >> > >> > 2009/6/15 Chris Nicola <[email protected]> >> > >> > >> > >> > > 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 >> > >> > -- >> > 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 -~----------~----~----~----~------~----~------~--~---
