sonra InnerException.Message = "Benzersiz anahtar ihlali ..." Kullanıcıya girilen girişin zaten kullanımda olduğunu bildirmek. Ben bu hatayı alıyorum (Session.CreateCriteria) bazı tarihi almak için çalışıyorum bundan sonra
: "MyEntityType" girdisinde boş kimliknull id "MyEntityType" girdisinde (bir özel durum meydana geldikten sonra Session.GetAll) bir GenericADOException
6
A
cevap
7
http://www.nhforge.org/doc/nh/en/index.html#manipulatingdata-exceptions
(Özel bir durum oluştuğunda sonra Oturumu floş yok)If the ISession throws an exception you should immediately rollback the transaction, call ISession.Close() and discard the ISession instance. Certain methods of ISession will not leave the session in a consistent state.
İstisnadan sonra oturumu attınız ve yeni bir oturum başlattınız mı?
1
Sen bağlamdan nesneyi kaldırmak ve böyle yaparsanız devam edebilirsiniz:
public void Save() {
try
{
Session.SaveOrUpdate(this);
}
catch
{
// If the object as a null identifier everything else fails. Remove from context
if (Session.GetIdentifier(this) == null)
((SessionImpl)Session).PersistenceContext.EntityEntries.Remove(this);
throw;
}
}
istisna ben bu sorunu yaşama gitmiyorum daha atıldı sonra() Session.Clear yaparsanız, Ama bunun bir web sitesi için tüm webapp için Session'ı temizlemek için iyi bir fikir olduğunu sanmıyorum. Bu istisnai bir istisna olan tek bir kullanıcı – Omu
Bir istisnadan sonra oturumu kapatmalısınız. Ekleme işlemini yapmadan önce uygulamanızın ilk sorguya yeniden yazılmasını öneririm, böylece bir veritabanı istisnası atılmadan aynı işlevselliği elde edebilirsiniz. Uygulama seçimleriniz nedeniyle istisnai olmayan bir durumda şu anda bir istisna uyguladığınız anlaşılıyor. Ayrıca, web uygulaması başına bir oturum değil, web başına bir oturum için en iyi uygulamadır. –