EF(EntityFramework)原理:属于ORM的一种实现

通过edmx文件来查看三部分:概念模型,数据模型,映射关系,上下文DbContext完成连接、状态跟踪管理,核心类是EntityClient完成映射

ASP.NET EF 延迟加载,导航属性延迟加载

EF(EntityFramework)延迟加载:

>1:EF查询默认会延迟加载

>2:EF对于集合类型的导航属性会延迟加载

本质:IQueryable拥有3个成员,Expression,Type,Provider

IQueryable与IEnumberable对比区别:

IQueryable: 可以拼接一个完成的SQL语句,然后请求数据库,拿到需要的数据

IEnumberable:直接把第一个命令请求数据库,然后拿到数据,在内存当中对于后续条件进行筛选。

把IQueryable 转换为IEnumberable :IQueryable.AsEnumberable();

EF非延迟加载:使用ToList()方法将结果立即拿到内存中(最好把命令全部拼接完之后使用ToList())

EF导航属性的非延迟加载Include("") 可以使导航属性非延迟加载

EF延迟加载 优点:用时才加载数据,保证数据的有效性

EF延迟加载 缺点:每次访问都加载一次,加重了数据库服务器的负担

create database MyFirstEF
on primary
(
    name='MyFirstEF.mdf',
    --修改为自己电脑上SQL DB路径
    filename='E:\ProgramMSSQLServerDB\MyFirstEF.mdf',
    size=5mb,
    maxsize=100mb,
    filegrowth=10%
)
log on
(
    name='MyFirstEF_log.ldf',
    --修改为自己电脑上SQL DB路径
    filename='E:\ProgramMSSQLServerDB\MyFirstEF_log.ldf',
    size=2mb,
    maxsize=100mb,
    filegrowth=5mb
)
go

use MyFirstEF
go

create table CustomerInfo
(
    id int identity(1,1) primary key,
    customerName nvarchar(100) not null,
    customerDate datetime
)
go

create table OrderInfo
(
  id int identity(1,1) primary key,
  orderName nvarchar(100),
  customerId int
)
go

alter table OrderInfo
add constraint FK_OrderInfo_CustomerInfo foreign key(customerId) references CustomerInfo(id)
go

insert into CustomerInfo 
select 'aa',GETDATE() union all
select 'bb',GETDATE() union all
select 'cc',GETDATE() union all
select 'dd',GETDATE() 
go

insert into OrderInfo
select 'bike1',2 union all
select 'bike2',2 union all
select 'car1',3 union all
select 'car2',3 union all
select 'chezi1',4 union all
select 'chezi2',4 
go

select * from CustomerInfo
go

select * from OrderInfo
go
--create SQL

相关文章: