Entity Framework基礎 開篇

2022-05-04 15:18:10 字數 4255 閱讀 9997

學習ef之前要熟悉以下知識:

1.自動屬性(auto-implemented properties)

//

以前的寫法 .net2.0

private

string

_username;

public

string

username

set }//

現在 只適合3.5以上

public string_username

2.隱式型別var

它是在編譯已經能確定變數的型別,是根據後面的值自動推斷型別,編譯時把推斷的型別替換掉var

看如下**:

var v = new ;

console.writeline(v.name);

console.writeline(v.age);

console.writeline(v.email);

console.readline();

//var  v.name=」小明」 ,隱式型別只能讀取,不能賦值

通過反編譯我們看到編譯器給我們自動生成了乙個我們沒見過的類,這就是隱式型別

3.物件初始化器與集合初始化器

物件初始化器

//

寫法一 demotest person = new demotest ;

//寫法一 demotest person = new demotest("123") ;

//二種寫法都在什麼時候用?

//寫法一 是在呼叫類的預設建構函式時用

//寫法二 是在呼叫類的預設有參建構函式時用

集合初始化器

listlist= new list,

new demotest()

};

4.擴充套件方法

這些帶向下箭頭的都是擴充套件的,那麼我們轉到定義(f12)看下,這個擴充套件定義在enumerable類裡面,是不是跟大家想的不一樣?一般都是轉到list本類裡面,所以所有的擴充套件方法,都在靜態類中。

我們要寫擴充套件方法的主要目的是什麼?

當乙個型別已經寫好之後,需要給這個型別加一些方法,但是加這個方法的時候不能修改型別,不能修改這個類的源**,那麼大家會想直接修改源**不就行了,假如.net2.0以前的版本list有一些方法是乙個版本,你要是修改了可能有不相容的問題

下面我們就自己寫乙個擴充套件方法

class

program

} public

class

newclass

public

intage

public

string

email

public

void

sayhello()

}//1.建立乙個靜態類

public

static

class

demotest

}

下面我們給string加乙個擴充套件方法:

class

program

}//1.建立乙個靜態類

public

static

class

demotest

}

接下來我們用反編譯看下:

擴充套件方法只是看起來像是某個物件的方法,從反編譯我們可以看出實際上根本不是該物件的方法,其實就是呼叫了某個靜態類中的方法。

更多的請看:

5.lambda表示式

首先我們說下匿名方法(知道即可),什麼是匿名方法?我們寫乙個方法為什麼要不寫名字呢?那麼我們該怎麼呼叫呢?接下來就這些問題進行解答:

1.顧名思義,沒有方法名的就叫匿名方法(o(∩_∩)o~)

2.當乙個方法只用一次,不需要在用,所以沒有必要在為方法起乙個名字,這樣做簡單,方便

3.匿名方法不能直接定義,而是在給委託變數賦值乙個方法時定義

定義匿名方法**如下:

class

program

;demodelegate();

showmessage();

console.readkey();

}static

void

showmessage()

}public

delegate

void demodelegate();//

定義乙個無引數無返回值的委託

那麼接下來我們說下豬腳lambda

:lambda其實就是匿名方法的簡化寫法

什麼是lambda表示式?'lambda表示式'就是乙個匿名的函式(匿名方法),可以包含表示式和語句,可建立委託

**如下:

1.無引數無返回值

demodelegate demolambda = () =>;

demolambda();

console.readkey();

2.有引數有返回值

寫法一:

static

void main(string

args)

;int result = demodelegate(10,"10"

); console.writeline(result);

console.readkey();}}

public

delegate

int paramsdelegate(int num1, string str);//

有引數有返回值

寫法二:

class

program

return

arr.sum();

};int result = paramsdelegate(1, 4, 5, 10, 9

); console.writeline(result);

console.readkey();}}

public

delegate

int paramsdelegate(params

int arr);

lambda其他用法:

首先擴充套件下泛型委託:

1.action(非泛型版本)

class

program

static

void

ac()

}

2.action<>(泛型版本)

static

void main(string

args)

;

lambda(5,10);
console.readkey();

}static

void listac(string

str)

3.func<>(只有泛型版本)

通過反編譯可以看出,func<>必須有返回值,可以有引數,用**看下:

static

void main(string

args)

;int result=func(5,10

); console.writeline(result);

console.readkey();

} static

int listfunc(int num1,int num2,int

num3)

我們看下常見篩選時使用lambda

list list = new list() ;

ienumerable

ie =list.where(l => );

foreach (var item in

ie)

console.readkey();

結尾:第一次寫博文,還請大神們多多指點!

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