EF 一些概念汇总

EF 必须要了解的一些 关键字含义 

virtual 导航属性    属性注释与Fluent API    iqueryable  ienumable   延迟加载 (懒加载)  include 贪婪加载   变量捕获

EF使用sql语句 以及使用存储过程

解释:

导航属性 其实就是 对表与表之间的关系进行说明  谁是谁的从表virtual 表示

属性注释和Fluent API 其实就是对字段之间的说明  谁不为空 谁是主键 谁长度多少 

eg:

 [Table("TimeZoneAirport")]
    public class TimeZoneAirport
    {
        [Key]
        public Int32 Id { get; set; }

        [ForeignKey("TimeZone")]
        public Int32 TimeZoneId { get; set; }

        public virtual TimeZone TimeZone { get; set; } //说明了与imeZone表有关系 而且自己是从表因为有外键注释

        [MaxLength(5)]
        public String AirportCode { get; set; }

        public Int32 Order { get; set; }
    }

 

iqueryable 与 ienumable 类型 其实 个人理解就是  表达式类型 与 内存类型

延迟加载(懒加载) 其实就是运用了 iqueryable 延迟加载数据  以及(virtual去懒加载将数据带出来)

概念:延迟加载延迟在哪里,1:条件需求的拼接 (iqueryable 表达式树) 2:导航属性的内容(virtual导航属性)poco=>proxy 默认代理和延迟都是开启

详解:1.针对外键导航属性,EF只有在这个外键属性用到的时候才会去查询2.先拼接出表达条件后放在那等条件完毕后tolist就能交互一次数据库

 

贪婪加载就是 在循环的时候 如果有延迟加载的话 那么效率就会低因为延迟加载带出来的数据也在循环里面 每次循环都会去查一下导航数据 所以就会重复多次 影响效率,所以include 的话 作用就是一次性加载出来  就算循环里面用到导航数据 也是从内存里面读取 而不用去和数据库一直交互从而提高效率

贪婪加载注意要关闭延迟加载

context.Configuration.LazyLoadingEnabled = false;

 

变量捕获    举例去掉元音字符

IEnumerable<char> query = "How are you, friend.";
            foreach(char vowel in "aeiou")
                {query = query.Where(c => c != vowel);}
 //只更改了u 是因为变量名一样 where(!vowel).where(!vowel)最后只取u
    foreach (char c in query) Console.Write(c); //How are yo, friend.

 

IEnumerable<char> query = "How are you, friend."; 
            foreach (char vowel in "aeiou")
            {
                char temp = vowel;
                query = query.Where(c => c != temp);
            }
 //因为变量名不一样所以  where(!a).where(!b)都加上了
            foreach (char c in query) Console.Write(c); //Hw r y, frnd.

 

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值