EF CodeFirst關於資料庫的一些基本操作

2021-07-24 21:30:33 字數 1645 閱讀 4678

一、資料庫初始化策略

資料庫初始化有4種策略

策略一:資料庫不存在時重新建立資料庫

database.setinitializer(new createdatabaseifnotexists());
策略二:每次啟動應用程式時建立資料庫

database.setinitializer(new dropcreatedatabasealways());
策略三:模型更改時重新建立資料庫

database.setinitializer(new dropcreatedatabaseifmodelchanges());
策略四:從不建立資料庫

database.setinitializer(null);
二、執行sql語句

有時候在code first中也會執行sql來做查詢,或者是查詢檢視。

using (var db = new studentdbcontext())

", person.personid, person.name, person.age, person.***);

}}console.readline();

查詢結果如下圖所示:

三、執行儲存過程

有時候使用sql能解決的問題使用ef就不那麼簡單,比如查詢樹的某個節點的所有父節點或所有子節點。而這種情況如果使用儲存過程就會很簡單。

下面是乙個簡單的儲存過程:

create procedure testprocedure

@personid nvarchar(100)

asbegin

select * from person where personid=@personid;

endgo

下面ef執行儲存過程:

listpersons = db.database.sqlquery("testprocedure @personid", new sqlparameter("@personid", "1000")).tolist();

foreach (var person in persons)

",person.personid,person.name,person.age,person.***);

}

執行結果如下圖所示:

上面的都是查詢使用的都是sqlquery,如果需要更新操作可以使用executesqlcommand方法。

int count = db.database.executesqlcommand("update person set name=@name where personid=@personid", new );

console.writeline(count);

執行結果如下圖所示:

開啟資料庫,檢視執行結果如下圖所示:

從上面截圖可以看到已經將personid=1000的name改為李四,之前都是王二。

EF CodeFirst 建立資料庫

codefirst 用中文說是 優先,此技術可以讓我們先寫 然後由entity framework根據我們的 建立資料庫 接下來用學生這個例子來演示,有學生表,課程表,和成績表三張表 首先是model層 學生表using system using system.collections.generic...

EF CodeFirst資料註解特性詳解

資料註解特性是.net特性,可以在ef或者ef core中,應用於實體類上或者屬性上,以重寫預設的約定規則。在ef 6和ef core中,資料註解特性包含在system.componentmodel.dataannotations命名空間和system.componentmodel.dataanno...

EF Code First 控制資料庫建立

有三個方法可以控制資料庫初始化時的行為。1 createdatabaseifnotexists createdatabaseifnotexists方法會在沒有資料庫時建立乙個,這是預設行為。database.setinitializer new createdatabaseifnotexists u...