小编Pal*_*Pal的帖子

EF(实体框架)使用"使用"语句

我有一个关于MVC的项目.我们为数据库交易选择了EF.我们为BLL层创建了一些管理器.我找到了很多例子,其中使用了" using"语句,即

public Item GetItem(long itemId)
    {
        using (var db = new MyEntities())
        {
            return db.Items.Where(it => it.ItemId == itemId && !it.IsDeleted).FirstOrDefault();
        }
    }
Run Code Online (Sandbox Code Playgroud)

这里我们创建一个新的DBcontext实例MyEntities().我们使用" using"以"确保正确使用IDisposable对象".

这只是我经理中的一种方法.但我有十多个.每当我从管理器调用任何方法时,我将使用" using"statemant并在内存中创建另一个DBcontext.什么时候垃圾收集器(GC)会处理它们?谁知道?

但是还有另一种使用管理器方法的方法.我们创建一个全局变量:

private readonly MyEntities db = new MyEntities();
Run Code Online (Sandbox Code Playgroud)

并在没有" using"语句的每个方法中使用DBcontext .方法看起来像这样:

public Item GetItem(long itemId)
{
    return db.Items.Where(it => it.ItemId == itemId && !it.IsDeleted).FirstOrDefault();
}
Run Code Online (Sandbox Code Playgroud)

问题:

  1. 使用DBcontext变量的正确方法是什么?
  2. 如果我们不使用" usage"语句(因为它会影响性能)怎么办 - GC会为此做些什么呢?

我是EF使用中的"新手",但仍然没有找到这个问题的明确答案.

c# garbage-collection entity-framework using-statement dbcontext

27
推荐指数
1
解决办法
3万
查看次数

如果值为NULL,为什么nullable int(int?)不会通过"+ ="增加值?

我的页面计数器类型是int?:

spot.ViewCount += 1;
Run Code Online (Sandbox Code Playgroud)

仅当ViewCount属性的值为NOT NULL(任何int)时,它才起作用.

为什么编译器会这样做?

我会很感激任何解决方案.

c# compiler-construction nullable operators

5
推荐指数
2
解决办法
4931
查看次数