無法使用ADO.NET Entity Framework執行存儲過程

.net ado.net entity-framework stored-procedures vb.net

我創建了一個簡單的無參數存儲過程,我在下面粘貼了它。我已將存儲過程導入到我的實體模型並創建了一個Function Import。永遠不會創建模型中的函數,我無法使用ADO.NET實體框架執行此存儲過程。我已在XML視圖中打開.edmx文件,並確認此存儲過程沒有錯誤。我究竟做錯了什麼?是否真的不可能從實體框架中調用這樣一個簡單的存儲過程?我已將導入函數的返回類型設置為None,看到此存儲過程不需要返回任何記錄集或值。

存儲過程:

ALTER PROC [dbo].[Inventory_Snapshot_Create]

AS

SET NOCOUNT ON

DECLARE @Inventory_Snapshot_ID int

INSERT INTO Inventory_Snapshots (snapshot_timestamp)
VALUES (GETDATE())

SET @Inventory_Snapshot_ID = SCOPE_IDENTITY()

INSERT INTO Inventory_Snapshot_Products (inventory_snapshot_id,
    idProduct, stock)

    SELECT @Inventory_Snapshot_ID, idProduct, stock
    FROM products


SET NOCOUNT OFF

代碼嘗試執行存儲過程:

Dim db As New MilkModel

db.Inventory_Snapshot_Create()

一般承認的答案

謝謝,pmarflee。

我實際上是來這裡發布我的決議並同時看到你的回复。此代碼實際使用實體框架的連接並執行我導入到模型中的存儲過程。 Microsoft一直在敦促我們開發人員使用Entity Framework而不是LINQ to SQL和其他DAL生成器,但EF 實際上並不是它需要的地方。在它是一個更完整的解決方案之前,我不會在未來的項目中使用它。

這是我最終做的事情:

Dim db As New MilkModel

'==
'Begin dirty hack to execute parameterless/resultless stored
'procedure using Entity Framework (well, sort of using EF). 
'http://social.msdn.microsoft.com/forums/en-US/adodotnetentityframework/thread/44a0a7c2-7c1b-43bc-98e0-4d072b94b2ab/
'==
Dim con As DbConnection = db.Connection

con.Open()

Dim cmd As DbCommand = con.CreateCommand()

With cmd
    .CommandType = CommandType.StoredProcedure
    .CommandText = "MilkModel.Inventory_Snapshot_Create"
    .ExecuteNonQuery()
    .Dispose()
End With

con.Dispose()
'==
'End dirty hack
'==

熱門答案

首先將它添加到模型中,然後轉到Entity Container,然後轉到Import the function。

詳情如下:

http://msdn.microsoft.com/en-us/library/bb896231.aspx



許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
這個KB合法嗎? 是的,了解原因
許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
這個KB合法嗎? 是的,了解原因