首页 > 其他 > 详细

EF框架学习(6)---EF中的在线场景保存数据

时间:2019-06-27 16:34:37      阅读:50      评论:0      收藏:0      [点我收藏+]

标签:添加   上下   strong   right   进行   图片   对象   mod   新的   

 

在线场景中保存数据

在线场景中保存实体数据是一项相当容易的任务,因为使用的是同一个context,这个context会自动跟踪所有实体发生的更改。

下图说明了在线场景中的CUD(创建,更新,删除)操作。

技术分享图片


EF在调用context.SaveChange方法时,根据EntityState进行添加、修改或删除实体实例,并执行INSERT,UPDATE和DELETE语句。在线场景中,context跟踪所有实体的实例,EntityState无论何时创建,修改或删除实体,它都会自动为每个实体设置适当的实例。

 

1.插入数据

使用DbSet.Add方法将新实体添加到上下文(context),调用context.SaveChanges()方法时在数据库中插入新记录。

技术分享图片
using (var context = new SchoolDBEntities())
{
    var std = new Student()
    {
        FirstName = "Bill",
        LastName = "Gates"
    };
    context.Students.Add(std);

    context.SaveChanges();
}
技术分享图片

在上面的示例中,context.Students.Add(std)将新创建的Student实体实例,这个新实例的EntityState 为Added。调用context.SaveChanges()方法时数据库构建并执行以下INSERT语句。

技术分享图片
exec sp_executesql N‘INSERT [dbo].[Students]([FirstName], [LastName])
VALUES (@0, @1)
SELECT [StudentId]
FROM [dbo].[Students]
WHERE @@ROWCOUNT > 0 AND [StudentId] = scope_identity()‘,N
‘‘@0 nvarchar(max) ,@1 nvarchar(max) ‘,@0=N‘Bill‘,@1=N‘Gates‘
go
技术分享图片

 

2.更新数据

在线场景中,EF API会跟踪上下文中所有实体。因此,在编辑实体数据时,EF会自动标记EntityState为Modified,在调用SaveChanges()方法时在数据库中生成并执行更新的语句。

using (var context = new SchoolDBEntities())
{
    var std = context.Students.First<Student>(); 
    std.FirstName = "Steve";
    context.SaveChanges();
}

我们使用从数据库中检索第一个学生:context.Students.First<student>()。一旦我们修改了FirstName,上下文就会将实例的EntityState设置为Modified。当我们调用该SaveChanges()方法时,会在数据库中构建并执行以下Update语句。

exec sp_executesql N‘UPDATE [dbo].[Students]
SET [FirstName] = @0
WHERE ([StudentId] = @1)‘,
N‘@0 nvarchar(max) ,@1 int‘,@0=N‘Steve‘,@1=2
Go

在更新语句中,EF API通过主键找到要修改的实例,修改时仅包含修改的属性,其他属性将被忽略。在上面的示例中,仅FirstName编辑了属性,因此update语句中只包含FirstName列。

 

3.删除数据

DbSet.Remove()方法用于删除数据库表中的记录。

using (var context = new SchoolDBEntities())
{
    var std = context.Students.First<Student>();
    context.Students.Remove(std);
    context.SaveChanges();
}

context.Students.Remove(std)将std实体对象标记为Deleted。因此,EF将在数据库中构建并执行以下DELETE语句。

exec sp_executesql N‘DELETE [dbo].[Students]
WHERE ([StudentId] = @0)‘,N‘@0 int‘,@0=1
Go

通过上边的例子可以看出,在线场景中添加,更新或删除中的数据非常容易。

EF框架学习(6)---EF中的在线场景保存数据

标签:添加   上下   strong   right   进行   图片   对象   mod   新的   

原文:https://www.cnblogs.com/zxwDont/p/11097502.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 bubuko.com 版权所有 鲁ICP备09046678号-4
打开技术之扣,分享程序人生!
             

鲁公网安备 37021202000002号