[EF]利用Telerik Data Access執行RAW SQL(non query)

  • 129
  • 0
  • 2016-03-29

[EF]利用Telerik Data Access執行RAW SQL(non query)

telerik提供了相當簡單的方式利用EF去執行RAW SQL:
不過這是non-query非查詢種類的執行RAW SQL喔,查詢種類的RAW SQL的話。。。個人是覺得不常用拉,在此便只說明non-query種類的執行方式。

using (MyDatabase db = new MyDatabase())
{
	String strSQL = "";
	strSQL = strSQL + "UPDATE myTable " + "\n";
	strSQL = strSQL + "SET geo_position = geography::Point(latitude,longitude,4326) " + "\n";	
	strSQL = strSQL + "WHERE case_no = @case_no  " + "\n";
	
	OAParameter paraCaseNo = new OAParameter();
	paraCaseNo.ParameterName = "@case_no";
	paraCaseNo.Value = strCaseNo;

	intAffectedRows = db.ExecuteNonQuery(strSQL, paraCaseNo);

	db.SaveChanges();
}

基本上跟.net的sqlcommand去執行RAW SQL的寫法很類似拉~但是Telerik對於sql執行時間的Timeout設定支援很差,想要執行長時間的sql的話,還是自己寫SQLCommand + SQLConnection並設定Timeout屬性吧,這個應該不用示範了吧。。。

參考文章:
http://docs.telerik.com/data-access/feature-reference/api/context-api/feature-ref-api-context-api-execute-commands-sp#executing_non-query_sql_statements