簡體   English   中英

EF 5中的表值函數?

[英]Table Valued Function in EF 5?

抱歉,如果這個措辭不是很好,但在升級到VS2012/.NET 4.5 ,我知道實體框架5中可以使用表值函數。

我們使用自定義數據層/ orm,我找不到任何不使用EDMX模型生成器的代碼示例,因為這沒用。

作為一個非常瘋狂的猜測,我會說一些定義表值函數的代碼需要在OnModelCreating(DbModelBuilder modelBuilder)

任何幫助贊賞。

Code-First策略不支持表值函數,僅適用於EDMX的Database-First: http//msdn.microsoft.com/en-us/hh859577 引用:

TVF目前僅在Database First工作流程中受支持。

我能夠使用EF 5輕松執行表值函數,如下所示:

int orderID = 100;
var query = context.Database.SqlQuery<Product>("Select * from [dbo].[tfn_GetOrderProducts](@p0)", orderID);
var results = query.ToList();

其中Product可以是任何POCO類,其成員名稱與表值函數的結果匹配。

這不是一個完美的解決方案 - 它不會返回IQueryable,因此您不能將其用作更大的LINQ查詢的一部分; 然而,在這種情況下,這就是我所需要的。

以下建議已從此鏈接中刪除http://blogs.msdn.com/b/adonet/archive/2011/06/30/walkthrough-table-valued-functions-june-ctp.aspx 我發現這些信息可能對您有用。

代碼優先方法

實體框架2011年6月CTP不包括CodeF對TVF的支持。 但是,您可以對您的TVF使用DbContext。 您可以通過將DbContext模板添加到模型中來完成此操作。 添加模板的步驟如下:

  • 打開NorthwindModel.edmx並右鍵單擊畫布
  • 單擊添加代碼生成項...
  • 選擇ADO.NET DbContext Generator V4.2,輸入模板的名稱,然后單擊“添加”

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM