2010-01-06 17 views
6

Tüm NH varlıklarım, BusinessEntity adlı bir türden türetilir, , en temel değerlere sahip olan ID, Created, CreatedBy, Updated, UpdatedBy.NHibernate exception collection [..User.Groups] flush tarafından işlenmedi()

CreatedBy/UpdatedBy Bir kullanıcı

Ben götüren bir IPreUpdateEventListener ve IPreInsertEventListener yangın denetim değerleri için geçerli DateTime almak için o. Ayrıca burada mevcut kullanıcı çalıştırmak için mantığı var benim windows kullanıcı ilkesine karşı bir kriter sorgu çalıştırarak kapmak. Ben Bu konuda NH kullanıcı grubuna yayınının tüm anlaşılmaktadır kadarıyla benim Kullanıcı sınıfı bu ben kullanıcıyı yüklemek nasıl bu benim Olay Dinleyicilerine düzgün çalışması için hevesle yüklenmesi gerekiyor

public User GetByDomainPrinciple(string domainPrinciple) 
{ 
    var domainPrincipleCriteria = DetachedCriteria.For<User>() 
     .Add(Restrictions.Eq("DomainPrinciple", domainPrinciple)) 
     .SetFetchMode("Roles", FetchMode.Eager) 
     .SetFetchMode("Groups", FetchMode.Eager) 
     .SetFetchMode("Groups.Roles", FetchMode.Eager) 
     .SetCacheable(true); 

    return Repository.QuerySingle(domainPrincipleCriteria); 
} 

Repository.QuerySingle(domainPrincipleCriteria); Sadece

return detachedCriteria 
.GetExecutableCriteria(_conversation.Session).UniqueResult<T>(); 

Bir şeyi özlüyor muyum yoksa kriterlerim yanlış mı? Ben mutlak en kötü durum senaryosu Ben bir Kullanıcı yerine bir Guid olmak için CreatedBy değiştirebilir ve sadece FK gibi manuel olarak atayabilir, ama bu çok kirli görünüyor.

cevap

1

Bence bu size yardımcı olabilir. Hata PreUpdateEventListener kaynaklanıyor. Geride aynı sorunu yaşadım.

http://ayende.com/Blog/archive/2009/04/29/nhibernate-ipreupdateeventlistener-amp-ipreinserteventlistener.aspx

+1

Açıklamada yararlı bir şey kaçırmadığım sürece bu işe yaramıyor. Burası olay dinleyicimin kodunu aldığım yer dışında NH'yi etkinlik dinleyicisinden çağırmak yerine sadece onun örneğini olduğu gibi windows ilkesini kullanarak. –

+0

Sanırım orada bir şey yüklüyorsanız size bu hatayı verecektir. Bu soruya, NH kullanıcı gruplarında ve diğer iki kişide de cevapsız bir yanıt almayı denedim. http://groups.google.com/group/nhusers/browse_thread/thread/1db7fd843b0b4b56/cdaa52f93e94e167?hl=en&lnk=gst&q=epitka#cdaa52f93e94e167. Üzgünüm daha fazla yardım etmedim. – epitka

+0

Bu çok yardımcı olmadı, bu yüzden bir çözüm olarak işaretlendiğine şaşırdım. –