2012年9月26日 星期三
以ADO.NET實體模型搭配EntityDataSource存取資料庫
今天保哥教了我一招 我才知道-原來ADO.NET實體資料模型也可以搭配EntityDataSource在WEBFORM上使用
步驟很簡單:
1. 建立一個ADO.NET實體模型
2.建立一個EntityDataSource
3. 設定EntityDataSource
接下來就能透過EntityDataSource來存取資料庫了!
EntityDataSource使用方式與SqlDataSource大同小異,都是透過設定精靈完成資料存取。
但兩者差異在於,後端資料庫不是搭配SQL SERVER時,透過SqlDataSource來存取資料庫將會產生語法的問題......
原因在於,SQL SERVER執行SQL指令時可以加入中括號而不影響結果,但如果資料庫使用MySQL卻會造成SERVER讀取指令錯誤無法執行。
筆者的資料庫系統就是使用MySQL,使用SqlDataSource存取資料時都需要自行指定SELECT,INSERT,UPDATE,DELETE指令,設定上也較複雜......
所以,筆者都是習慣寫程式碼 : 建立連線字串->建立連線->存取資料->將資料放到相對應表格 。但是這樣在作網站時會浪費很多時間在建立資料連接與存取上......
如果使用EntityDataSources呢?
很簡單,設定精靈設定完之後就能直接存取資料庫了,不用因為資料庫語法上的差異再做其他設定,甚至寫程式碼存取資料。
針對非SQL SERVER的開發環境EntityDataSource的確比較方便易用,但如果開發環境都是微軟自家產品時差別就不囉!(或許有,但筆者不確定)。
注:使用EntityDataSource時須注意,其所使用的SQL指令並非T-SQL,而是Entity SQL,使用上會有些微差異,範例如下:
account表中有四個欄位{id,pwd,mail,address},假設筆者要查詢account中所有欄位的資料-大家應該會用 * 來做查詢,但在Entity SQL中,例1指令將會發生錯誤,例2才可SELECT到資料
1. (X)SELECT * FROM account WHERE id = 'xyz';
2. (O)SELECT id,pwd,mail,address FROM account WHERE id = 'xyz';
Entity SQL不可使用 "*"
訂閱:
張貼留言 (Atom)
沒有留言:
張貼留言