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
好了,今天就到這里,明天繼續總結。
?
轉載于:https://www.cnblogs.com/kmsfan/p/4181246.html
總結
以上是生活随笔為你收集整理的Entity FrameWork 365日系列文章源码研究 (1)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: mongodb 简单部署方案及实例
- 下一篇: mysql的优化