Entity Framework 簡單查詢

2022-02-19 05:29:25 字數 4060 閱讀 4192

前言

首先來簡單的複習一下如何使用code first。

第三步在呼叫即可生成相應的資料庫。

efcontext.cs

public

class

efcontext:dbcontext

public efcontext(string

connectionstring)

:base

(connectionstring)

public dbsetpersons

}

xml version="1.0" encoding="utf-8"

?>

<

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

>

package.config 

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

void main(string

args)

and age

", p.personname, p.age);}}

console.readline();

}

執行後控制台沒有資料顯示,但是在資料庫裡可以檢視到相應的資料庫efcontext和資料表people。

現在我們通過資料庫直接為上面建立的資料庫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("

efcontext"))

and age

", p.personname, p.age);

}}console.readline();

可以直接通過sql語句的拼接額,當然這裡只是做了最簡單的例項。

不僅如此,ef還支援非實體型別的查詢:

using (var db = new efcontext("

efcontext"))

", p);}}

使用database的executesqlcommand去更新資料:

using (var db = new efcontext("

efcontext"))

使用executesqlcommand 或者sqlquery直接指定儲存過程:

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 在頁面呼叫時如果通過時間來查詢,請記住一定要這樣寫 ...