可以使用配置檔案或**(ef6起)配置ef框架。
一、使用配置檔案
安裝entity framework自動生成的配置
當使用vs的nuget自動安裝entity framework(本文使用6.2.0)時會自動生成一些**。在***.config中會自動新增一些配置
乙個空的配置檔案:
安裝entity framework後配置檔案變為:<?xml version="1.0" encoding="utf-8"?>
可以看到增加了、配置節,這些配置都是針對微軟sqlserver資料庫的,如果使用其他資料庫還有修改一下。<?xml version="1.0" encoding="utf-8"?>
如果將配置節刪掉,執行程式會拋異常,異常丟擲的位置為dbcontext初始化的時候。
所以配置節是必須的,其作用是建立自定義配置節,配置ef框架。預設生成的自定義配置節名稱為entityframework,所以下面的也是必須的。
自動生成的配置節中包含了、這兩個配置節。其實只包含配置節就可以了且是必須的。
配置節的作用是配置code first預設連線工廠。此配置節下的用來指定連線工廠建構函式的引數,如果引數是多個可以配置多個。
配置節的作用是指定訪問資料庫的客戶端dll(ef6起)。
自此預設的配置解析完了,接下來是非自動生成的配置。
需手動配置的部分
配置節用於配置資料庫連線字串,是必須配置的(一定程度上,若不配置則要顯示傳遞資料庫連線給上下文)。
下的配置節是選配的,作用是配置自定義資料庫上下文,完成資料庫初始化。
下的配置節配置***(ef6.1起)。例:
的type逗號前是類名(含命名空間),逗號後是命名空間,配置節配置類建構函式的引數。
的屬性codeconfigurationtype配置資料庫連線配置,必選。如果連線配置是自定義的擴充套件自dbconfiguration的類,那麼要配置這個自定義類。
二、使用**完成配置
使用**完成配置要做到以下幾項
1)建立system.data.entity.dbconfiguration類的子類
2)在子類建構函式中呼叫dbconfiguration的方法進行配置。
3) 將繼承自dbconfiguration的子類傳給dbconfigurationtype特性,啟用配置
dbconfiguration中的方法
protected internal void setdefaultconnectionfactory(idbconnectionfactory connectionfactory);
設定資料庫連線工廠,對應配置節
protected internal void addinterceptor(idbinterceptor interceptor);
設定資料庫***,對應配置節
protected internal void setexecutionstrategy(string providerinvariantname, funcgetexecutionstrategy);
設定訪問資料庫的客戶端dll,對應配置節
三、示例(ef6.0.0)
以mysql為例說明只使用配置檔案、只使用編碼方式、使用配置檔案和編碼結合的方式完成配置。
ef操作mysql涉及到兩個dll:mysql.data.entity,mysql.data.entity.ef6.dll(適用於.net framework 4.0 或.net framework 4.5),一般使用mysql.data.entity.ef6.dll
使用配置檔案
可以看出:
配置節是預設生成的沒有變化。
配置節配了兩個連線字串,並且使用清除預設配置。
配置節變化較大,資料庫客戶端為mysql.data.mysqlclient。codeconfigurationtype為mysql.data.entity.mysqlefconfiguration
使用編碼配置
配置檔案和編碼結合配置檔案部分public class customdbconfiguration : mysqlefconfiguration
}[dbconfigurationtype(typeof(customdbconfiguration))]
public class customdbcontext : dbcontext
}
編碼部分
public class customdbconfiguration : mysqlefconfiguration
}[dbconfigurationtype(typeof(customdbconfiguration))]
public class customdbcontext : dbcontext
}
Entity Framework 架構簡介
當微軟的wcf 大行其道,通用資料訪問模型entity framework卻稍遜一籌,有很多需要完善和進步的地方,本文對entity framework 架構做一下簡介。實體框架 entitry framework 以下簡稱ef 看起來像乙個有趣的技術,更強大,比linq to sql 更先進。這兩...
entity framework 批量刪除
以前用sql寫批量刪除的時候,感覺挺利索的,簡潔地寫了 public bool delectusersuggest string addsql 然後在頁面層直接呼叫 現在用entity framework,感覺有點麻煩不能直接delete,還要先把資料查出來,以下是主要 1 先查出實體 region...
Entity Framework 動態查詢
不想多說什麼直接說 region 搜尋並分頁 ljy 傳入搜尋條件,當前頁碼,每頁的顯示的條數,資料的總數 輸出引數 三個引數,返回 商實體 搜尋條件 當前頁碼 每頁的顯示的條數 資料的總數 public iqueryable endregion 在頁面呼叫時如果通過時間來查詢,請記住一定要這樣寫 ...