Entity FrameWork 365日系列文章源码研究 (1)

  By KMSFan --  此系列的文章只作为自己的读书笔记,不纳入博客园首页。

  总结的知识点:

  1.DBContext 类

  2.Attribute里的属性(NotNull)

  3.DbContext实现的2个接口:1.IDisposeable 2.IDbContextService

  namespace Microsoft.Data.Entity.Commands

我们先来看看这个命名空间下的东西,有一个contextTool方法

里面有一个CreateContext方法。

由于我自己对DbContext比较的感兴趣,于是忍不住按了下F12,于是看到了以下的结构:

其中DbContext实现了2个接口,一个是IDisposable,另一个是IDbContextServices,我想,既然实现了这2个接口,那么肯定实现了这2个接口里的方法吧?!

心动不如行动,赶紧看看里面有什么东西。

IDisposable:

namespace System
{
    //
    // 摘要:
    //     定义一种释放分配的资源的方法。
    public interface IDisposable
    {
        //
        // 摘要:
        //     执行与释放或重置非托管资源相关的应用程序定义的任务。
        void Dispose();
    }
}

 IDbContextService

using System;

namespace Microsoft.Data.Entity.Infrastructure
{
    public interface IDbContextServices
    {
        IServiceProvider ScopedServiceProvider { get; }
    }
}

  由于我用的是VS2015,嘿嘿,新功能,告诉大家一个小秘密,可以看哪些地方引用到了这个接口哦。

  由此可以看出这个接口的重要性了吧?!其实在EF里面有很多这样的东西,这也许正是EF强大的地方吧。让我们再回到CreateContext这个方法吧,其中有一个叫做Attribute的东西,我这里的是NOT NULL,就是不为空。

  

  也就是说,传入的参数是不为空的(形参)。我们来看看这个NOT NULL究竟是何方神圣?!

   internal sealed class NotNullAttribute : Attribute
    {
    }

  看到了吧?其实是一个封闭的内部类,里面什么都没有。网上我没找到答案,最终,万能的谷歌有了解答,嘿嘿。我就不翻译了,以后再来翻译。

http://stackoverflow.com/questions/4619185/what-is-an-internal-sealed-class-in-c

好了,今天就到这里,明天继续总结。

时间: 2024-10-18 14:10:48

Entity FrameWork 365日系列文章源码研究 (1)的相关文章

vue系列文章 --- 源码目录结构整理(三)

vue的版本是:^2.6.10 结构如下: |----- vue | |--- dist # 打包之后的目录vue文件 | | |--- vue.common.dev.js | | |--- vue.common.js | | |--- vue.common.prod.js | | |--- vue.esm.browser.js | | |--- vue.esm.browser.min.js | | |--- vue.esm.js | | |--- vue.js | | |--- vue.min

【转】Entity Framework技术导游系列开篇与热身

转自:http://blog.csdn.net/bitfan/article/details/12779517 Entity Framework走马观花 之 把握全局 ========================================= 这是一个系列文章 上一篇<Entity Framework技术导游系列开篇与热身 > ========================================= 在深入学习某项技术之前,应该努力形成对此技术的总体印象,并了解其基本原理,本

MVC系列——MVC源码学习:打造自己的MVC框架(四:自定义视图)

前言:通过之前的三篇介绍,我们基本上完成了从请求发出到路由匹配.再到控制器的激活,再到Action的执行这些个过程.今天还是趁热打铁,将我们的View也来完善下,也让整个系列相对完整,博主不希望烂尾.对于这个系列,通过学习源码,博主也学到了很多东西,在此还是把博主知道的先发出来,供大家参考. 本文原创地址:http://www.cnblogs.com/landeanfen/p/6019719.html MVC源码学习系列文章目录: MVC系列——MVC源码学习:打造自己的MVC框架(一) MVC

Entity Framework 6 开发系列 目录

2014 年开始接触 Entity Framework 6 也快两年,用它已经沉淀了一个成熟架构,也用来开发了不少大大小小的产品和项目,直到这段时间,才真正有时间来回顾,重新学习它,为让大家更加了解Entity Framework 6,以及想把这两年中,开发过程中碰到的种种问题,跟大家分享,特此想做一个Entity Framework 6 开发系列的计划 第一篇:Entity Framework 简介 第二篇:Entity Framework CodeFirst & Model 映射 第三篇:E

MySQL系列 - MySQL源码安装配置

二.MySQL系列 - MySQL源码安装配置(附5.7等最新版本)1.依赖环境准备2.开始安装2.1.下载MySQL2.2.解压2.3.赋权限2.4.修改配置文件2.5.启动MySQL3.MySQL 5.7源码安装不同之处 二.MySQL系列 - MySQL源码安装配置(附5.7等最新版本) 1.依赖环境准备 make安装 make编译器下载地址:http://www.gnu.org/software/make/ # tar zxvf make-3.82.tar.gz # cd make-3.

spring-boot-2.0.3不一样系列之源码篇 - SpringApplication的run方法(一)之SpringApplicationRunListener,绝对有值得你看的地方

前言 Springboot启动源码系列还只写了一篇,已经过去一周,又到了每周一更的时间了(是不是很熟悉?),大家有没有很期待了?我会尽量保证启动源码系列每周一更,争取不让大家每周的期望落空.一周之中可能会插入其他内容的博文,可能和springboot启动源码有关,也可能和启动源码无关. 路漫漫其修远兮,吾将上下而求索! github:https://github.com/youzhibing 码云(gitee):https://gitee.com/youzhibing 前情回顾 这篇是在spri

Redis源码研究—哈希表

Redis源码研究-哈希表 Category: NoSQL数据库 View: 10,980 Author: Dong 作者:Dong | 新浪微博:西成懂 | 可以转载, 但必须以超链接形式标明文章原始出处和作者信息及版权声明 网址:http://dongxicheng.org/nosql/redis-code-hashtable/ 本博客的文章集合:http://dongxicheng.org/recommend/ 本博客微信公共账号:hadoop123(微信号为:hadoop-123),分享

LIVE555源码研究之四:MediaServer (一)

从本篇文章开始我们将从简单服务器程序作为突破点,深入研究LIVE555源码. 从前面的文章我们知道,任何一个基于LIVE555库实现的程序都需要实现自己的环境类和调度类.这里,服务器程序就使用了BasicEnvironment库中实现的简单环境类和简单调度类.说它简单,是因为该环境类仅仅实现了将错误信息输出到控制台.而调度类仅仅通过select模型实现socket的读写. 下面我们来看下简单环境类BasicEnvironment和简单调度类BasicTaskScheduler是如何实现的. 打开

OAuth2学习及DotNetOpenAuth部分源码研究

OAuth2学习及DotNetOpenAuth部分源码研究 在上篇文章中我研究了OpenId及DotNetOpenAuth的相关应用,这一篇继续研究OAuth2. 一.什么是OAuth2 OAuth是一种开放认证协议,允许用户让第三方应用访问该用户在某一网站上存储的私密的资源(如照片,视频,联系人列表),而无需将用户名和密码提供给第三方应用.数字2表示现在使用第2代协议. 二.OAuth2中的角色 OAuth2有四种角色 resource owner资源所有者:比如twitter用户,他在twi