Bazı web sitesi veritabanı kodunda hata ayıklayıcıya basıyordum ve veritabanı değişiklikleri uygulanmadan önce yürütmeyi sonlandırdım. Ama yine de veritabanına yazıldılar!KULLANIM bloğu, web sitesi vs windows formunda farklı davranıyor
Bir Windows Form uygulaması kullanarak sorunu yeniden oluşturmaya çalıştım ve veritabanına yazılmadı (beklenen davranış). Web sitesine geri döndüm ve , yaptı.
İşte basit bir örnek sayfa. Bir fark yaparsa ben bir web sitesinde bu çalıştırıyorum:
<%@ Page Language="C#" %>
<%@ Import Namespace="System.Diagnostics" %>
<!DOCTYPE html>
<script runat="server">
protected void Page_Load(object sender, EventArgs e)
{
using (MsSqlDataContextDataContext db = new MsSqlDataContextDataContext())
{
Product product = db.Products.First(p => p.id == 21);
Debug.WriteLine("Line 1");
// I learnt the hard way that if you try to update the database with the value
// that already exists, it seems to get optimised away.
// The update must a new value.
product.Type = "bogus" + DateTime.UtcNow.Ticks;
Debug.WriteLine("Line 2"); // <- Breakpoint here
db.SubmitChanges();
}
}
</script>
<html>
<head runat="server">
</head>
</html>
ben bitirmek yürütme idam ikinci ayıklama baskı veya SubmitChanges()
önce kesme noktasında (Shift + F5), . "Satır 2", hata ayıklama penceresine çıkış değil değil, ancak veritabanı değişiklikleri yapılır.
Aynı testi bir Windows Formunda çalıştırmak aynı davranır.
Sayfa kullanım ömrü veya oturum yönetimi bir şekilde burada karışıyor mu? Bu nasıl mümkün olabilir, Hat 2 basılmaz!
Windows formunda bir hata/istisna alıyor musunuz, nasıl çalışmıyor? – raidensan
@raidensan Yeniden yazacağım. Aynı davranmaz. Değişimi veritabanına yazmaz ('Gönder' çağrısından önce iptal ettiğim sürece, beklemediğim gibi). – Ian
Örneğinizde "Debug.WriteLine (" Line 2 ") yerine yeni Exception() yazın ve nasıl gittiğini görün. – Evk