前言
首先來簡單的複習一下如何使用code first。
第三步在呼叫即可生成相應的資料庫。
efcontext.cs
publicclass
efcontext:dbcontext
public efcontext(string
connectionstring)
:base
(connectionstring)
public dbsetpersons
}
xml version="1.0" encoding="utf-8"package.config?>
<
configuration
>
<
configsections
>
<
section
name
="entityframework"
type
="system.data.entity.internal.configfile.entityframeworksection, entityframework, version=5.0.0.0, culture=neutral, publickeytoken=b77a5c561934e089"
requirepermission
="false"
/>
configsections
>
<
connectionstrings
>
<
add
name
="efcontext"
connectionstring
="data source=.;database=efcontext;uid=sa;pwd=sa123;"
providername
="system.data.sqlclient"
>
add>
connectionstrings
>
<
startup
>
<
supportedruntime
version
="v4.0"
sku=".netframework,version=v4.5"
/>
startup
>
<
entityframework
>
<
defaultconnectionfactory
type
="system.data.entity.infrastructure.localdbconnectionfactory, entityframework"
>
<
parameters
>
<
parameter
value
="v11.0"
/>
parameters
>
defaultconnectionfactory
>
entityframework
>
configuration
>
xml version="1.0" encoding="utf-8"然後簡單的新增了乙個實體類?>
<
packages
>
<
package
id="entityframework"
version
="5.0.0"
targetframework
="net45"
/>
packages
>
public最終進行呼叫class
person
public
string personname
public
int age
public
string address
public
string email
}
static執行後控制台沒有資料顯示,但是在資料庫裡可以檢視到相應的資料庫efcontext和資料表people。void main(string
args)
and age
", p.personname, p.age);}}
console.readline();
}
現在我們通過資料庫直接為上面建立的資料庫efcontext中的people表手動新增了幾條資料。
然後重新執行程式。可以發現有資料了。
此時可以發現我們的第乙個簡答的查詢語句已經實現了。
乙個資料庫上下文的生命週期隨著該物件的建立而開始,隨著物件的釋放(或gc**)而結束,因此建議在開發過程中使用「using」編碼方式,這樣就可以免去手動釋放物件的操作。另外對於資料庫連線的管理在ef中是透明的,我們一般不需要手動進行處理,當查詢乙個物件時開啟連線當處理完查詢的結果集之後會自動關閉連線。
linq to entity表示式查詢
查詢表示式是c#3.0新增的功能,它是由一組類似於t-sql或xquery宣告性語句組成,clr並不能直接讀取這種查詢表示式而是在編譯時轉換為對應的方法呼叫。如下面的例子:
using (var db = new efcontext("得到的結果同上面是一致的。efcontext"))
and age
", p.personname, p.age);
}}console.readline();
基於方法的查詢
基於方法的查詢事實上是一組物件的擴充套件方法,同linq查詢不同的是這些方法可以直接被clr識別並執行。
例如上面的方法我們可以轉換為如下**,他們的效果是一樣的,返回的都是「iqueryable」物件,這裡的**其實也就是我們開始為建立資料庫測試的**
using (var db = new efcontext("當然執行的結果還是一樣的。efcontext"))
and age
", p.personname, p.age);
}}console.readline();
原生sql的查詢
ef還支援原生sql查詢, 在database上的sqlquery使你能夠執行sql返回任意型別的資料,例如:
using (var db = new efcontext("可以直接通過sql語句的拼接額,當然這裡只是做了最簡單的例項。efcontext"))
and age
", p.personname, p.age);
}}console.readline();
不僅如此,ef還支援非實體型別的查詢:
using (var db = new efcontext("使用database的executesqlcommand去更新資料:efcontext"))
", p);}}
using (var db = new efcontext("使用executesqlcommand 或者sqlquery直接指定儲存過程:efcontext"))
context.database.executesqlcommand ("execute [dbo].[dosomething]
").
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 在頁面呼叫時如果通過時間來查詢,請記住一定要這樣寫 ...