我們對我們的數據庫層使用ado.net實體框架4.0,並且我是ado.net實體框架的新手。我通過在實體框架中添加實體來創建實體。我想用存儲過程映射該實體而不是數據庫的表。存儲過程將返回與實體相同的列。怎麼可能以及如何在沒有映射到表格的情況下做到這一點?ADO.NET Ef4-如何將實體映射到存儲過程而無需映射到表
回答
它不是可能的,因爲對象集是一個IQueryable和映射的對象集存儲過程不會給ü一個IQueryable因爲其本身的性質存儲過程不能組成。您可以做的最好的方法是將存儲過程內的內容放入視圖並將視圖映射到可能的ObjectSet。
linq-to-sql有可能爲什麼它不可能與實體框架?我已經用Linq做了很多次。 – 2010-07-15 09:22:18
我在說什麼,我不希望一個實體綁定表。我想使用這個實體作爲我的存儲過程select語句的結果,例如select product,產品的productname,並且會有一個prouct類,它將擁有這些property。但我不想將產品綁定到產品表,我只是想將其與存儲過程綁定。 – 2010-07-19 10:27:07
好的放心,它不被支持。有關於這個問題的內部辯論,但我不確定這是否會在不久的將來得到支持。 – zeeshanhirani 2010-07-19 13:53:20
您需要創建一個複雜類型,而不是實體。打開模型瀏覽器並將你的存儲過程導入爲「函數導入」(你的SP不能使用#tempTables,但你可以使用@tableVariables);在函數導入嚮導中,您會看到一個「創建複雜類型」按鈕。
SP成爲模型上下文中的方法,您可以使用它來獲取IEnumerable [TheComplexType]。
在EF4.1代碼中,首先它更簡單,您可以將[ComplexType]屬性放在任何類的頂部,並且可以將該類型用作context.ExecuteStoreQuery [T]的返回類型。如果您的屬性完全按照返回的列名(並且類型排列)命名,則映射是「魔術」 - 它只是起作用。
- 1. 如何用EF4映射存儲過程?
- 2. 將表映射到實體
- 3. 實體框架 - 映射不映射存儲過程?
- 4. 存儲過程映射實體框架
- 5. 實體讀取存儲過程映射?
- 6. 實體框架AddRange:如何映射到存儲過程?
- 7. 將存儲過程映射到實體以更新單列
- 8. 使用MergeOption將存儲過程映射到實體框架
- 9. 實體框架:如何將實體的屬性映射到存儲過程?
- 10. 將NativeQuery映射到實體
- 11. 將實體映射到DTO
- 12. 將實體映射到多個表(EF4,WCF RiaServices) - 國際化
- 13. 無法將LINQ映射到實體
- 14. 是否可以將存儲過程列映射回EF4中的實體?
- 15. Doctrine2實體如何映射到實體
- 16. 映射存儲過程到實體額外的計算列
- 17. 實體框架3.5,將存儲過程結果映射到自定義實體
- 18. 將存儲過程結果映射到實體框架中的實體5
- 19. 將實體映射到2個表
- 20. 實體框架:調用存儲過程而不映射
- 21. Hibernate映射 - 映射到表
- 22. 將存儲過程映射到返回temproray表數據的實體
- 23. 如何將內存映射到散列映射到文件
- 24. 將多個實體映射到EF4抽象基類或接口?
- 25. 如何將存儲過程的結果映射到對象
- 26. EF4 - 映射1表到2對象
- 27. 將表和存儲過程映射到相同模型
- 28. AutoMapper - 將一個EF4實體映射到一個循環中的另一個無前/後映射
- 29. 實體映射
- 30. 映射實體
我只想將實體與存儲過程綁定,而不是與數據庫表綁定。你提出的步行雖然沒有說明這一點。 – 2010-07-14 06:00:35
如果你只想通過存儲過程檢索實體:http://msdn.microsoft.com/en-us/library/cc716672.aspx – 2010-07-14 06:13:41