En iyi yanıtlayıcılar
Ado.Net SQlTransaction Kullanımı

Soru
-
Arkadaşlar merhaba;
Ado.Net yapısı ile SQlTransaction kullanmak istiyorum. Fakat şu şekilde bir hata alıyorum:
"Komuta atanan bağlantı beklemedeki yerel işlem içinde olduğunda, ExecuteNonQuery, komutun bir işleme sahip olmasını gerektirir. Komutun Transaction özelliği başlatılmamış."
Kod Yapısı şu şekilde:
Execute komutunu çalıştırınca hata alıyorum sebebi ne olabilir?SqlTransaction sqlTransaction = ConString.BeginTransaction(); return Tools.ExecuteNonQuery(ConString, Command, sqlTransaction); // Buradan ExecuteNonQuery adında bir metoda gidiyorum.
Metot şu şekilde: public static bool ExecuteNonQuery(SqlConnection con, SqlCommand cmd, SqlTransaction transaction) { try { if (cmd.Connection.State == ConnectionState.Closed) cmd.Connection.Open(); //else //cmd.Connection.Close(); int etk = cmd.ExecuteNonQuery(); // Bu adımda hata alıyorum transaction.Commit(); return etk > 0 ? true : false; } catch (Exception ex) { transaction.Rollback(); throw new Exception(ex.ToString()); } finally { cmd.Connection.Close(); } }
Yanıtlar
-
Genel olarak tavsiye etmeyeceğim bir yapı kullanmissiniz (using blokları ile olmasını beklerdim), ama buardaki hata SqlCommand'e Transaction'i atamamaniz.
cmd.Transaction = transaction;
How to create a Minimal, Reproducible Example
The way to Go.
World's most advanced open source (object-) relational Database.
Flutter (for mobile, for web & desktop.- Yanıt Olarak İşaretleyen metehan koray 8 Mart 2020 Pazar 19:58
- Yanıt İşaretini Geri Alan metehan koray 8 Mart 2020 Pazar 19:58
- Yanıt Olarak İşaretleyen metehan koray 8 Mart 2020 Pazar 20:00
Tüm Yanıtlar
-
selam,
bu linkten kontrol edermisin. SqlCommand ve SqlConnection'ın Transaction'ı belirtmen lazım
-
-
-
Genel olarak tavsiye etmeyeceğim bir yapı kullanmissiniz (using blokları ile olmasını beklerdim), ama buardaki hata SqlCommand'e Transaction'i atamamaniz.
cmd.Transaction = transaction;
How to create a Minimal, Reproducible Example
The way to Go.
World's most advanced open source (object-) relational Database.
Flutter (for mobile, for web & desktop.- Yanıt Olarak İşaretleyen metehan koray 8 Mart 2020 Pazar 19:58
- Yanıt İşaretini Geri Alan metehan koray 8 Mart 2020 Pazar 19:58
- Yanıt Olarak İşaretleyen metehan koray 8 Mart 2020 Pazar 20:00
-
Metodu şu şekilde düzenledim. Using Bloğu kulladım. Şu şekilde çalıştı.
public static bool ExecuteNonQuery(SqlConnection con, SqlCommand cmd, SqlTransaction transaction) { try { using (var trans = cmd.Transaction) { if (cmd.Connection.State == ConnectionState.Closed) cmd.Connection.Open(); cmd.Transaction = transaction; int etk = cmd.ExecuteNonQuery(); transaction.Commit(); return etk > 0 ? true : false; } } catch (Exception ex) { transaction.Rollback(); throw new Exception(ex.ToString()); } finally { cmd.Connection.Close(); } }
-
Çünkü daha yavaş.
Projede hız önemli.Bu sebeple Ado.Net yapısını kullandım.
Doğru bir tercih yaptığımı düşünüyorum Mehmet Bey ama görüşünüzü paylaşırsanız sevinirim.
e-mail: onay[nokta]yalciner[at]hotmail[nokta]com
-
Çünkü daha yavaş.
Projede hız önemli.Bu sebeple Ado.Net yapısını kullandım.
Doğru bir tercih yaptığımı düşünüyorum Mehmet Bey ama görüşünüzü paylaşırsanız sevinirim.
-
Çünkü daha yavaş.
Projede hız önemli.Bu sebeple Ado.Net yapısını kullandım.
Doğru bir tercih yaptığımı düşünüyorum Mehmet Bey ama görüşünüzü paylaşırsanız sevinirim.
Yavaşlık doğru metriklere vurduğunuzda anlamlıdır. Ürün hakkında bilgi vermiyorsunuz gerçekten bu ihtiyacınız var mı bilemeyiz- ama koda baktığımda ihtiyacınız olduğunu düşünmüyorum-. Aynı mantıkla .net kullanmanız da uygulamanızı çok yavaşlatır bu durumda assembly'mi kullanmalısınız? SQL yerine doğrudan dosyadan okursanız dehşet hızlı çalışacaktır. Burada taş/kuş ilişkisi kurmak gerekiyor.