EntityFramework数据持久化 第四章 EF的高级使用

Liana ·
更新时间:2024-11-14
· 607 次阅读

一、EF执行SQL语句(一)

1、为什么使用EF执行SQL语句?

1)进行复杂的查询时,直接使用EF执行SQL语句性能会优于使用LINQ自动生成查询语句。

2)某些特殊的查询条件,LINQ无法自动生成查询语句。

2、数据上下文DbContext的Database的属性:

1)ExecuteSqlCommand()不返回结果、只返回受影响的行数,适用于执行创建、插入、更新、删除操作(即执行给定的DDL/DML命令)。

2)SqlQuery()返回查询到的结果、并将结果保存在数据实体中,适用于执行查询操作。

二、EF执行SQL语句(二)

1、SqlQuery()使用前需要指定返回值的类型。

1)返回值类型可以是定义的实体类型,或者基元类型。

2、EF调用存储过程

1)在创建实体数据模型,或从数据库更新模型时,选择“存储过程和函数”

2)在模型浏览器中,编辑导入函数

三、Code First

1、步骤:

1)创建应用程序。

2)选择模型内容为“空Code First模型”。(可选)

3)在Models文件夹上右击选择新建类,并命名为User。

4)继续创建Order类后创建数据上下文类MeixinContext。

5)在配置文件中添加连接字符串。

6)编写数据访问代码。

7)打开SQLServer查看效果。

2、Code First检测到数据库和模型两者不匹配时,数据库将被删除并重建以满足匹配关系。

1)可以使用Database.SetInitializer方法来实现这一效果:

Database.SetInitializer( new DropCreateDatabaseIfModelChanges());

四、主从表查询

1、EF提供了三种方式加载从表数据:

1)延迟加载:只在需要的时候加载相关表数据。加载主从表数据需要多次访问数据库。

2)贪婪加载:当主表实体加载时,相关联的从表数据通过连接查询也一同被加载。加载主从表数据只需要一次访问数据库

3)显式加载:类似于延迟加载,但在访问导航属性时不会出现自动加载,需要手动显式指定加载哪个主表对象相关联的从表数据。加载主从表数据也需要多次访问数据库,但由于不是加载全部从表数据,因此访问数据库次数少于延迟加载。

小剧场:如果可以?不,不可以… 英文版:If possible?No,No…
作者:高聪明



ef 持久化

需要 登录 后方可回复, 如果你还没有账号请 注册新账号