EF 呼叫儲存過程

2021-06-22 22:47:37 字數 2972 閱讀 5348

1.執行返回表型別的儲存過程

主表從表資料一起關聯查詢

alter proc [dbo].[getcategory]

@cidint

asbegin

select*

fromcategories

where@cid = cid

end

執行此儲存過程的**如下:

public ienumerablegetcategorywithproductswithid(intid)

; //聯表並延遲載入

varresult = (fromp in this.categories.sqlquery("execute getcategory @cid", parameter)select p).tolist();

returnresult;

}

其中,category所對應products是延遲載入進來的,如果我們只使用category,資料引擎就不會查詢products表的資料,但是,只要我們一到category中檢視products,就會獲取如上圖這樣的products資料。請根據原始碼中的兩個資料實體理解。

僅獲取主表資料

public ienumerablegetcategorywithid(intid)

; //非聯表

varresult = (fromp in this.categories.sqlquery("execute getcategory @cid", parameter)

selectnew

).tolist()

.select(r =>new category()

);returnresult;

}

由從表關聯主表資料

alter proc [dbo].[getproductandcategory]

@pidint

asbegin

selectp.pid, p.[name] , p.discontinued_date, c.cid, c.[name]

fromproducts as p join categories as c onp.cid = c.cid

wherep.pid = @pid

end

dbcontext預設支援實體型別的字段和資料庫檢視是乙個欄位名,所以我們去掉了重新命名部分。

public ienumerablegetproductandcategorywithid(intid)

; //延遲載入

varresult = (fromp in this.products.sqlquery("execute dbo.getproductandcategory @pid", parameter)select p).tolist();

returnresult;

}

要注意,主表的資料也是延遲載入的,只有使用到的時候才會被查詢。

2.執行返回值的儲存過程

create procedure [dbo].[proselectcount]

@stuid int

asbegin

select count(*) from enrollment where studentid=@stuid

end

**如下:

type t = typeof(int);

sqlparameter params = new sqlparameter[1];

params[0]= new sqlparameter("@stuid",1);

var results = db.database.sqlquery(t,"exec proselectcount @stuid",params).cast().first();

3.執行增刪改

create procedure [dbo].[prodel]

@stuid int,

@courseid int

asbegin

delete from [wlfschool].[dbo].[enrollment]

where studentid=@stuid andcourseid=@courseid

end

這個用的是運算元據庫 返回受影響行數

sqlparameter params = new sqlparameter[2];

params[0]= new sqlparameter("@stuid",1);

params[1]= new sqlparameter("@coursid",2);

int i = db.database.executesqlcommand("exec prodel @stuid,@courseid" ,params);

4.其他方法

var query = db.database.sqlqueryfordaynamic("select * from view_student ");

foreach(dynamic item in d)

EF呼叫儲存過程

1 無引數查詢 var model db.database.sqlquery select from userinfoes tolist 2 有參查詢 var model db.database.sqlquery select from userinfoes where id id new sqlp...

EF框架呼叫儲存過程

新到的公司專案用ef mvc,開始接觸,遇到很多挫折,由於資料庫設計原因,很多地方都要用檢視 儲存過程來實現一些需求。呼叫儲存過程遇到了好多問題,這邊記錄一下幾種呼叫方式,及遇到的問題的解決方式。儲存過程 alter procedure sp name param1 int,param2 int,p...

ef mysql 儲存過程 EF 儲存過程

one 理論 a 定義 儲存過程 stored procedure 是一組為了完成特定功能的sql語句集合,經編譯後儲存在伺服器端的資料庫中,利用儲存過程可以加速sql語句的執行。儲存過程分為系統儲存過程和自定義儲存過程。1.系統儲存過程在master資料庫中,但是在其他的資料庫中可以直接呼叫,並且...