1. 程式人生 > >EF進階篇(三)——上下文

EF進階篇(三)——上下文

前言

    上下文,到底什麼是上下文,且聽我仔細吹來。

內容

    在對EF實體進行關係操作的時候,第一步需要我們建立上下文例項物件,然後根據實體的變化進而通過上下文對該實體進行狀態的修改,我的理解就是上下文就是一個狀態容器,裡面可以放好多變化實體,而且還有一種狀態標準,比如:增加、刪除、修改、查詢等狀態。然後上下文根據進來實體的變化生成帶有狀態的可執行指令碼然後去操作資料庫,從而達到通過EF框架,可以操作資料庫的目的。


我們平常生成的上下文如下,繼承了底層封裝好的dbcontext

        //父類的構造方法,達到連線配置檔案中資料庫配置功能
        public HumanResourcesSystemEntities()
            : base("name=HumanResourcesSystemEntities")
        {
        }
    
        protected override void OnModelCreating(DbModelBuilder modelBuilder)
        {
            throw new UnintentionalCodeFirstException();
        }
    
        public DbSet<T_departmentTable> T_departmentTable { get; set; }
        public DbSet<T_userTable> T_userTable { get; set; }

上面程式碼第一個方法,是繼承了父類dbcontext的構造方法,是一個連線資料庫的功能。

  <connectionStrings>
    <add name="HumanResourcesSystemEntities" connectionString="metadata=res://*/test1.csdl|res://*/test1.ssdl|res://*/test1.msl;provider=System.Data.SqlClient;provider connection string="data source=.;initial catalog=HumanResourcesSystem;user id=sa;password=***;MultipleActiveResultSets=True;App=EntityFramework"" providerName="System.Data.EntityClient" />
  </connectionStrings>

EFcodeonly模式下,我們可以自定義上下文,如下:

        public HotelDBcontext()
            : base("name=ConnCodeFirst")//連結資料庫
        {
 
        }
        //根據這個集合找到這個實體,然後根據實體之間的關係去建立資料庫;
        public DbSet<Customer> Customer { get; set; }
        public DbSet<OrderInfo> OrderInfo { get; set; }

    上下文也是需要管理的,如果多個程序都要訪問這個上下文例項,是不是會造成讀髒資料。怎麼對上下文例項進行管理呢?微軟又想辦法了,保證上下文例項只有一個,那麼可以選擇放到一個需求裡。放到

html上下文裡面進行建立:用的時候先判斷是否存在上下文例項,如果存在直接用,如果不存在那麼就給他例項化一個。可以參考這個連結:http://www.cnblogs.com/kissdodog/p/3360584.html

小結

    不斷總結,不斷進步。

感謝您的寶貴時間···