में अलग-अलग व्यवहार करता है, मैं कुछ वेबसाइट डेटाबेस कोड में डीबगर के माध्यम से कदम उठा रहा था, और डेटाबेस परिवर्तन लागू होने से पहले निष्पादन समाप्त हो गया था। लेकिन वे अभी भी डेटाबेस में लिखे गए थे!ब्लॉकिंग का उपयोग वेबसाइट बनाम विंडोज़ फॉर्म
मैंने विंडोज़ फॉर्म एप्लिकेशन का उपयोग करके समस्या को फिर से बनाने की कोशिश की, और यह डेटाबेस (अपेक्षित व्यवहार) को नहीं लिखा। मैं वेबसाइट पर वापस गया, और यह था।
यहां एक साधारण उदाहरण पृष्ठ है। मैं एक वेब साइट में यह चल रहा है अगर यह एक फर्क नहीं पड़ता:
<%@ 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>
मैं अंत निष्पादन (शिफ्ट + F5) ब्रेकप्वाइंट पर, दूसरा डिबग प्रिंट या SubmitChanges()
से पहले निष्पादित हो । "लाइन 2" डीबग विंडो में आउटपुट नहीं है, लेकिन डेटाबेस बनाया गया है।
विंडोज़ फॉर्म में एक ही परीक्षण चलाना वही व्यवहार करता है।
पृष्ठ जीवन चक्र या सत्र प्रबंधन किसी प्रकार से हस्तक्षेप कर रहा है? यह कैसे संभव है, लाइन 2 मुद्रित नहीं होता है!
क्या आपको विंडोज़ फॉर्म पर त्रुटि/अपवाद मिल रहा है, यह कैसे काम नहीं करता है? – raidensan
@raidensan मैं इसे दोबारा बताऊंगा। यह वही व्यवहार नहीं करता है। यह डेटाबेस में परिवर्तन नहीं लिखता है (जैसा कि मुझे उम्मीद है कि यह नहीं होना चाहिए, क्योंकि मैंने 'सबमिट' कॉल से पहले छोड़ा था)। – Ian
"उदाहरण के लिए" Deugug.WriteLine ("रेखा 2") "के बजाय" नया अपवाद() "फेंक दें और देखें कि यह कैसा चल रहा है। – Evk