Kullanıcı-üyelik işlemleri için Identity, diğer işlemler için de normal ADO. Net kullandığımız bir uygulama var. Standart database işlemlerinde eğer birden fazla insert/update sorgusu atacaksak TransactionScope kullanıyoruz. Normalde scpoe içine istediğim kadar query ekleyebiliyorum. Hatta gerekirse kendim timeout bile veriyorum. Fakat bu lanet şeyin içine Identity'e ait bi create yada update işlemi koyunca o işlemde 'Timeout expired' diye hata fırlatıyor. Scope'a 30 dk.'lık timeout koysam bile 10-20 saniye içinde exception veriyor. Scope içinde Identity'nin find gibi methodlarında sorun olmuyo, sadece tabloyu değiştiren methodlar problem çıkarıyo. Basitçe, scope kullanmayarak olası exceptionları yakalayıp nceki database işlemlerini geri alabilirim, kullanıcı ekleyip güncellerken entity framework kullanmayıp kendim insert edebilirim gibi amelece çzümler düşünüyorum ama şu aşamada çok büyük zaman kaybı olur. rnek kodlar aşağıda, yardımcı olacaklara teşekkür ediyorum. public void CreateUser { var userManager = new MyUserManager(new UserStore<ApplicationUser>(new ApplicationDbContext ; using (TransactionScope scope = new TransactionScope(TransactionScopeOption. Required, new TimeSpan(0,30,0))) { var company = new Company ; AddCompany ; var user = new ApplicationUser ; userManager. Create ; // Exception burada çıkıyor. scope. Complete ; } } public void AddCompany { using (SqlConnection connection = new SqlConnection } Everyone sees just what they want to see.

Yardımcı olabilecek varsa diye up olsun Everyone sees just what they want to see.

transactionscope icinde insert edilmis bir kaydi comit etmeden tekrar update etmek istersen veya ayni tabloyu iki defa update etmen genele bu hatayi verir. Ayni sekilde insert veya update ettigin datayi comit etmeden once select de etsen timeout verir. ayni anda 2 transaction da olusmus olabilir mi hocam? farkli sayfalarda o tabloya transaction baslatmis olabilir. Bu aralar fazla yogunum. Unuttugum seyler oluyorsa affola. DM vs atın.

hiç TransactionScope kullanmadım, ama db context e timeout verip dener misin hocam Ülkesini Seven Her Türk Vatandasi, Ülkesinin Sessiz Istilasi'na karsi durmak zorunda.

hiç TransactionScope kullanmadım, ama db context e timeout verip dener misin hocam timeout süresi kısa olan dolduğunda exception fırlatıyor hocam, bişey değişmiyor yani. TransactionScope; Complete methodu çağrılmadıkça verileri veritabanına yazmıyor. Context'de aynı bağlantı üzerinden aynı veritabanını kullanmaya çalıştığı için deadlock oluşuyor. Birkaç kişiye daha sormuştum soruyu, aldığım cevaplardan anladığım kadarıyla sebebi bu. Gerçi pek tatmin etmedi beni, sonuçta veritabanına bir bağlantı açıksa ikinci bağlantının açılmasına izin vermemesi gerekiyor diye biliyorum. Burada her iki bağlantı da açılıyor. Ya da EF benim anladığımdan çok daha farklı şekilde çalışıyor. Bunun üzerine uğraşırsam birşeyler çıkar belki. Teşekkürler yorumlarınız için. Everyone sees just what they want to see.

Demek istediğini anladığımı teyit etmek için rnek kod üzerinden gideyim; şirket ekliyorum, onu commitlemeden şirket id'si ile ilişkisi olan kullanıcılar tablosuna başka bir kayıt ekliyorum. Commitlenmediği için olmayan bir kaydın id'si ile ilişki kuramıyor. Eğer hatanın sebebi bu ise, Entity Framework yerine kendim kaydı insert ettiğimde sorun olmuyor. userManager'ı şirket ekleme işleminden sonra oluştursam da birşey değişmeyecek, çünkü veri database'e eklenmediğinden aynı problem devam edecek diye düşünüyordum, denedim yine exception'a düştü. aynı anda iki transactiona düşme ihtimali yok galiba.transactionScope ve Identity kullandığım her yerde istisnasız her seferinde veriyo çünkü, ayrıca bu method tek bi controllerdan çağrılıyo ve o controllera tek bir sorgu gidiyo. Everyone sees just what they want to see.