ben yukarı ve aşağı NHibernate Cookbook ve mevcut tüm forum-mesaj yoluyla okuma olmasına rağmen içinde, hala bitmiş bu basit sorgu almanız mümkün değilim:NHibernate QueryOver Sum JoinQueryOver
Ben herkes birine sahip olan kullanıcılar hesabı. Her hesap bir dengede. sınıflar böyle bakmak:
public class User
{
public virtual int Id { get; set; }
public virtual Account Account { get; set; }
public virtual bool Active { get; set; }
}
public class Account
{
public virtual int Id { get; set; }
public virtual double Balance { get; set; }
}
Şimdi tüm aktif kullanıcıların dengesini özetlemek istiyorum. Düz SQL fazla bir şey ... oldukça kolaydır:
SELECT SUM(a.Balance)
FROM User u
INNER JOIN Account a
ON u.Account_id = a.Id
WHERE u.Active = 'true'
herhangi ben fikrim yok, NHibernate 3. yeni QueryOver-Api o nasıl çözebileceklerini bir verebilir misiniz kod örneği?
Teşekkürler!
Daniel Lang
DÜZENLEME
NHibernate Linq ile çok çok kolay olduğunu, biliyorum ama ... İşte çalışan Linq Örnek ise o QueryOver kullanarak çözmek istiyoruz: bulabildiğim AlexCuse için
var result = Session.Query<User>()
.Where(x => x.Active)
.Sum(x => x.Account.Balance)
ÇÖZÜM
Teşekkür son çözüm (çok yakındı) - işte tam kod:
User userAlias = null;
Account accountAlias = null;
session.QueryOver<User>(() => userAlias)
.JoinAlias(() => userAlias.Account,() => accountAlias)
.Where(() => userAlias.Active)
.Select(Projections.Sum<Account>(acct => accountAlias.Balance))
.SingleOrDefault<double>()
Çok teşekkür ederim! Orada sadece yazım hatası vardı - "acct.Balance" yerine "accountAlias.Balance" kullanın. Yukarıdaki düzenlemeye bakın. Her yerde takma adlar hile yaptı! –
Ah, bu SingleOrDefault benim aradığım şey. Umarım hatırlayabilirim. Sürpriz acct.Balance işe yaramazdı ama belki de takma adı, projeksiyona aktarılan her şeyi koyar. – AlexCuse