2014-02-27 47 views
0

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

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(); 
    } 

它只是风格的差异还是有一些其他的差异,我失踪了?

回答

0

在第一种方法中,该对象仍附加到上下文。你会这样做更新一个实体,下一个实体,你必须添加对象到上下文保存,通常是为了添加新记录。

0

在第一种方法中,stud是从数据库中拉出来的,仍然附着在上下文中。如果您进行了更改,并且调用了db.SaveChanges(),那么这些更改将反映在数据库中。

第二种方法是简单地创建一个Student的新实例。您必须致电db.Students.Add(student)将其添加到数据库中。你不需要这种方法的使用陈述,直到你想添加它。

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

一个现在依然与上下文,对方只是数据库以外的对象,直到你添加它。

+0

因此,对于第二个,如果我做了学生stud,然后写dbCtx.Student它会产生相同的结果吗?我的意思是这种方式,我把它连接到上下文吧? –

+0

使用第一种方法抓住已经存在的学生。第二种方法是创建一个新学生,你可以通过dbCtx.Students.Add(student) – Jonesopolis

相关问题