遇到這種情形,筆者可能會選擇設計View、資料表函數或者預存程序,在EF內加入此物件。但要記得回傳的查詢結果必須要有Key值。
另一種情形是開發者無法(或沒有權限)在DB上新增物件。可能的方案是直接在EF下 SQL語法。從舊有的程式翻修時,會遇到有複雜join的情形,靠EF Mapping可能會有錯。這時候可以手動帶參數進去。
using (var ctx = new SchoolDBEntities()) { var student = ctx.Students .SqlQuery("Select * from Students where StudentId=@id", new SqlParameter("@id", 1)) .FirstOrDefault(); }
但這樣的sql如果選取的欄位名稱與EF內的物件名稱衝突,還是會產生Exception。
沒有留言:
張貼留言