一、資料庫初始化策略
資料庫初始化有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...