以下实例化实体的方法有什么区别?

时间:2014-02-27 01:48:03

标签: c# asp.net

以下实例化实体的方式有什么区别?考虑到Student是数据库中的表。

Student stud
using (var ctx = new SchoolDBEntities())
    {
        stud = ctx.Students.Where(s => s.StudentName == "New Student1").FirstOrDefault<Student>();
    }

using (var dbCtx = new SchoolDBEntities())
    {
        var student = new Student();
    }

它只是风格上的差异还是我缺少其他一些差异?

2 个答案:

答案 0 :(得分:0)

在第一种方式中,对象仍然附加到上下文。您这样做是为了更新实体,下一个实体,您必须将对象添加到上下文中以进行保存,通常是为了添加新记录。

答案 1 :(得分:0)

在第一种方法中,stud从数据库中提取,仍然附加到上下文。如果您进行了更改并调用db.SaveChanges(),则这些更改将反映在数据库中。

第二种方法是创建Student的新实例。您必须调用db.Students.Add(student)将其添加到数据库中。在您想要添加它之前,您不需要使用此方法的using语句。

Is it just difference in style or is there some other difference I am missing?

一个仍然链接到上下文,另一个只是数据库之外的对象,直到你添加它。