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

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

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

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

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

  2. MVC系列——MVC源码学习:打造自己的MVC框架(一:核心原理)

    前言:最近一段时间在学习MVC源码,说实话,研读源码真是一个痛苦的过程,好多晦涩的语法搞得人晕晕乎乎.这两天算是理解了一小部分,这里先记录下来,也给需要的园友一个参考,奈何博主技术有限,如有理解不妥之 ...

  3. [转]MVC系列——MVC源码学习:打造自己的MVC框架(一:核心原理)

    本文转自:http://www.cnblogs.com/landeanfen/p/5989092.html 阅读目录 一.MVC原理解析 1.MVC原理 二.HttpHandler 1.HttpHan ...

  4. MVC系列——MVC源码学习:打造自己的MVC框架(二:附源码)

    前言:上篇介绍了下 MVC5 的核心原理,整篇文章比较偏理论,所以相对比较枯燥.今天就来根据上篇的理论一步一步进行实践,通过自己写的一个简易MVC框架逐步理解,相信通过这一篇的实践,你会对MVC有一个 ...

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

    转自:http://blog.csdn.net/bitfan/article/details/12779517 Entity Framework走马观花 之 把握全局 ================ ...

  6. Spring Ioc源码分析系列--Ioc源码入口分析

    Spring Ioc源码分析系列--Ioc源码入口分析 本系列文章代码基于Spring Framework 5.2.x 前言 上一篇文章Spring Ioc源码分析系列--Ioc的基础知识准备介绍了I ...

  7. MVC系列——MVC源码学习:打造自己的MVC框架(四:了解神奇的视图引擎)

    前言:通过之前的三篇介绍,我们基本上完成了从请求发出到路由匹配.再到控制器的激活,再到Action的执行这些个过程.今天还是趁热打铁,将我们的View也来完善下,也让整个系列相对完整,博主不希望烂尾. ...

  8. MVC系列——MVC源码学习:打造自己的MVC框架(三:自定义路由规则)

    前言:上篇介绍了下自己的MVC框架前两个版本,经过两天的整理,版本三基本已经完成,今天还是发出来供大家参考和学习.虽然微软的Routing功能已经非常强大,完全没有必要再“重复造轮子”了,但博主还是觉 ...

  9. Entity Framework 5.0系列之Code First数据库迁移

    我们知道无论是"Database First"还是"Model First"当模型发生改变了都可以通过Visual Studio设计视图进行更新,那么对于Cod ...

随机推荐

  1. *HDU 1007 计算几何

    Quoit Design Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Tot ...

  2. 2016huasacm暑假集训训练五 G - 湫湫系列故事——减肥记I

    题目链接:http://acm.hust.edu.cn/vjudge/contest/126708#problem/G 这是一个01背包的模板题 AC代码: #include<stdio.h&g ...

  3. IntelliJ IDEA 15 激活码 正版 可离线激活

    43B4A73YYJ-eyJsaWNlbnNlSWQiOiI0M0I0QTczWVlKIiwibGljZW5zZWVOYW1lIjoibGFuIHl1IiwiYXNzaWduZWVOYW1lIjoiI ...

  4. gulp + webpack + sass 学习

    笔记: new webpack.optimize.CommonsChunkPlugin 核心作用是抽离公共代码,chunks:['index.js','main.js'] 另一个作用就是单独生成一个j ...

  5. 为什么要重写hashcode() 方法

    Java中的集合(Collection)有两类,一类是List,再有一类是Set. 前者集合内的元素是有序的,元素可以重复:后者元素无序,但元素不可重复. 那么我们怎么判断两个元素是否重复呢? 这就是 ...

  6. ENode框架Conference案例分析系列之 - ENode框架初始化

    前言 Conference案例是使用ENode框架来开发的.之前我没有介绍过ENode框架是如何启动的,以及启动时要注意的一些点,估计很多人对ENode框架的初始化这一块感觉很复杂,一头雾水.所以,本 ...

  7. 剑指Offer面试题:17.树的子结构

    一.题目:树的子结构 题目:输入两棵二叉树A和B,判断B是不是A的子结构.例如下图中的两棵二叉树,由于A中有一部分子树的结构和B是一样的,因此B是A的子结构. 该二叉树的节点定义如下,这里使用C#语言 ...

  8. [译]Asp.net MVC 之 Contorllers(二)

    URL路由模块 取代URL重写 路由请求 URL路由模块的内部结构 应用程序路由 URL模式和路由 定义应用程序路由 处理路由 路由处理程序 处理物理文件请求 防止路由定义的URL 属性路由 书接上回 ...

  9. js动态生成选项之考试系统(一)

    <%@ page language="java" import="java.util.*" pageEncoding="utf-8"% ...

  10. java中 用telnet 判断服务器远程端口是否开启

    package net.jweb.common.util; import java.io.BufferedReader; import java.io.BufferedWriter; import j ...