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

一、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<MeixinContext>());

四、主从表查询

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

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

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

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

小剧场:如果可以?不,不可以…

英文版:If possible?No,No…

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值