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資料庫中,但是在其他的資料庫中可以直接呼叫,並且...