USING块在网站与Windows窗体

时间:2016-04-29 06:00:57

标签: c# asp.net winforms using

我在一些网站数据库代码中单步执行调试器,并在应用数据库更改之前结束执行。但他们仍被写入数据库!

我尝试使用Windows窗体应用程序重新创建问题,但它没有写入数据库(预期的行为)。我回到了网站,做了

这是一个简单的示例页面。我在网站网站中运行它,如果它有所作为:

<%@ 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>

我在断点处结束执行( Shift + F5 ),在第二次调试打印之前SubmitChanges()执行。 &#34;第2行&#34;是输出到调试窗口,但数据库更改

在Windows窗体中运行相同的测试的行为相同。

页面生命周期或会话管理是否会以某种方式干扰此处?这怎么可能,2号线不打印!

1 个答案:

答案 0 :(得分:6)

当您在winform应用程序中停止调试时,进程正在终止,您的代码将停止执​​行。

在asp.net中并非如此。当您停止调试器(通常)时,它不会终止iis进程,只需分离调试器即可。您的代码继续运行,请求完成。

这个问题有重复,没有代表将此标记为重复。