无法使用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合法吗? 是的,了解原因