Entity Framework 是否需要在 CRUD 上使用 Session HttpContext?

Does Entity Framework need a Session HttpContext on CRUD?

我用 MySql 和 Sql 服务器看了一些 class 关于 Entity Framework 的内容。 首先,老师使用数据库中的实体,他在其中创建上下文数据库,然后开始插入

using(sampleEntities ctx = new sampleEntities()){
client clt = new client();
clt.name = txtName.Text;
clt.phone = txtPhone.Text;
ctx.Add(clt);
ctx.SaveChanges();

但是其他老师对 DAL、BLL 和 UI usgin 会话和 httpContext 做了一些不同的事情,他说实体需要这个会话来避免 "persistence conflict" 因为第一个例子使用相同的 "connection/session" 对于很多用户来说,他就是这样做的:

    public static sample01Entities Current
    {
        get
        {
               if (System.Web.HttpContext.Current.Session["SampleDbContext"] == null)
            {
                db = new sample01Entities();
                System.Web.HttpContext.Current.Session["SampleDbContext"] = db;
            }
            return db;

        }
    }

` 然后在达尔城

        public void Add(cidade c)
    {
        SampleDbContext.Current.cidade.Add(c);
        SampleDbContext.Current.SaveChanges();
        SampleDbContext.Current.ChangeTracker.Entries<cidade>();
    }

问题是:在不危及网站的情况下使用第一个示例是否安全?或者我应该一直对所有 CRUD 方法使用会话吗?

谢谢

在会话中存储上下文是个糟糕的主意。

阅读以下关于它的回答: Entity Framework Object Context in ASP.NET Session object?

上下文应通过方法或请求创建。

回答你的问题:

  • 是的,使用第一种方法是安全的,当然更推荐使用第一种方法,然后将上下文存储在会话中。