我的場景 我正在使用Visual Studio 2010與實體框架4.1 我有一個包含許多表和許多存儲過程的遺留數據庫。我正在寫一個ASP.NET C#程序使用MVC 3在實體框架中映射選擇存儲過程
我已經採用了'數據庫第一'設計使用ADO.NET DbContext,所以我有一個edmx與所有的模型和關聯和導航屬性很好地設置。 我可以將插入,更新,刪除過程映射到相關模型。 我用'功能導入'來導入其他存儲過程。 但是,我無法找到一種方法來映射我的選擇過程以選擇操作(按ID選擇,選擇列表,按過濾器等選擇)。
EF似乎使用延遲加載,所以我想要發生的是當對象獲取其子對象時它使用已經寫入的存儲過程。 (選定的程序需要考慮的一個「請將isDeleted」標誌,並使用了「ORDER BY子句,除其他外)
我從這篇文章中看到 http://weblogs.asp.net/scottgu/archive/2007/08/16/linq-to-sql-part-6-retrieving-data-using-stored-procedures.aspx 是LINQ到SQL允許拖動和SP的下降,這聽起來,或多或少,正是我想要的。
我也遇到過DefiningQuery這個詞。 http://msdn.microsoft.com/en-us/library/cc982038.aspx 這是我想要的嗎?我不喜歡註釋'當您運行「更新模型嚮導」時,對存儲模型所做的任何更改(包括定義查詢)都將被覆蓋。
總之,我想要發生的事情是,當一個對象獲取其使用我的存儲過程的子對象時。
使用實體框架可以實現我的目標嗎? 我錯過了一些明顯的東西嗎?
或者我應該儘量做到真正聰明和修改數據庫實體T4模板,這樣,例如,我的生成地址模式有此屬性:
public virtual ICollection<AddressLine> AddressLines {
get{
DBWrapper _db = new DBWrapper();
return _db.GetAddressLines(AddressID);
}
set{};
}
其中GetAddressLines是調用一個函數的自定義功能導入並進行必要的轉換。
謝謝。這證實了我的懷疑 – Webbie4