C# 什么';以下实例化实体的方法有什么区别?
以下实例化实体的方法有什么区别?考虑到Student是数据库中的表C# 什么';以下实例化实体的方法有什么区别?,c#,asp.net,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()
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();
}
学生螺柱
使用(var ctx=new SchoolDBEntities())
{
stud=ctx.Students.Where(s=>s.StudentName==“New Student1”).FirstOrDefault();
}
使用(var dbCtx=new SchoolDBEntities())
{
var student=新学生();
}
这只是风格上的差异还是我缺少的其他差异?在第一种方式中,对象仍然附加到上下文。要更新一个实体,下一个实体,必须将对象添加到要保存的上下文中,通常是添加新记录 在第一种方法中,从数据库中提取
螺柱
,并且仍然附加到上下文。如果进行了更改,并调用了db.SaveChanges()
,这些更改将反映在数据库中
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();
}
第二种方法是简单地创建Student
的新实例。您必须调用db.Students.Add(student)
将其添加到数据库中。这种方法不需要using语句,除非您想添加它
这仅仅是风格上的差异,还是我缺少了其他一些差异?
一个仍然链接到上下文,另一个只是数据库之外的一个对象,直到您添加它。所以对于第二个,如果我进行了Student stud,然后编写了dbCtx。Student还会产生相同的结果吗?我的意思是说,我把它和上下文联系起来了,对吗?使用第一种方法,你可以抓住一个已经存在的学生。第二种方法将创建一个新学生,您可以通过
dbCtx.Students.add(student)