1

我想知道这两者有什么区别...

using (var db = new PteDotNetContext())
            {
                var blog = new Blog() { BlogType = 1, Title = "Blog 1", Description = TestInfo.UniqueRecordIdentifier, DateAdded = DateTime.Now, User = TestInfo.UniqueRecordIdentifier };
                db.Blogs.Add(blog);
                db.SaveChanges();
            }


            PteDotNetContext context2 = new PteDotNetContext();
            var blog2 = new Blog() { BlogType = 1, Title = "Blog 2", Description = TestInfo.UniqueRecordIdentifier, DateAdded = DateTime.Now, User = TestInfo.UniqueRecordIdentifier };
            context2.Blogs.Add(blog2);
            context2.SaveChanges();

是。我知道使用 using 语句基本上调用对象的析构函数。我只是好奇...

a) using 语句是否打开然后关闭 DbContext 上的 Sql 连接?b)如果是这样,第二个语句会发生什么,因为我从未真正打开它并且它仍然有效。那么我什么时候结束声明呢?

4

1 回答 1

3

a) using 语句是否打开然后关闭 DbContext 上的 Sql 连接?

语句内部声明的变量using在 using 块结束时被 Disposed。在 DbContext 上,处置方法会关闭连接,因此一旦该代码块结束,连接就会关闭。

b)如果是这样,第二个语句会发生什么,因为我从未真正打开它并且它仍然有效。那么我什么时候结束声明呢?

垃圾收集器在不再需要时清除上下文对象,然后关闭连接。

你应该阅读关于using声明IDisposable

于 2012-04-13T16:17:22.847 回答