Gespeicherte Prozedur kann nicht mit ADO.NET Entity Framework ausgeführt werden

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

Frage

Ich habe eine einfache parameterlose gespeicherte Prozedur erstellt, die ich unten eingefügt habe. Ich habe die gespeicherte Prozedur in mein Entitätsmodell importiert und einen Funktionsimport erstellt. Die Funktion im Modell wird niemals erstellt, und ich kann diese gespeicherte Prozedur nicht mit ADO.NET Entity Framework ausführen. Ich habe die EDMX-Datei in der XML-Ansicht geöffnet und bestätigt, dass keine Fehler in Bezug auf diese gespeicherte Prozedur aufgetreten sind. Was mache ich falsch? Ist es wirklich unmöglich, eine so einfache gespeicherte Prozedur aus dem Entity Framework aufzurufen? Ich habe den Rückgabetyp für die Importfunktion auf Keine festgelegt, da diese gespeicherte Prozedur keine Recordsets oder Werte zurückgeben muss.

Gespeicherte Prozedur:

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

Code, der versucht, die gespeicherte Prozedur auszuführen:

Dim db As New MilkModel

db.Inventory_Snapshot_Create()

Akzeptierte Antwort

Danke, Pmarflee.

Ich bin eigentlich hierher gekommen, um meine Entschließung dazu zu posten und Ihre Antwort zur gleichen Zeit zu sehen. Dieser Code verwendet tatsächlich die Verbindung des Entitätsframeworks und führt die gespeicherte Prozedur aus, die ich in das Modell importiert habe. Microsoft hält uns Entwickler drängen Entity Framework anstelle von LINQ to SQL und anderen DAL - Generatoren zu verwenden , aber EF ist wirklich nicht , wo es überhaupt sein muss. Ich werde es in zukünftigen Projekten nicht verwenden, bis es eine vollständigere Lösung ist.

Folgendes habe ich am Ende getan:

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
'==

Beliebte Antwort

Zuerst fügen Sie es dem Modell hinzu, dann gehen Sie zum Entitätscontainer und dann zur Funktion Importieren.

Vollständige Details hier:

http://msdn.microsoft.com/de-de/library/bb896231.aspx



Lizenziert unter: CC-BY-SA with attribution
Nicht verbunden mit Stack Overflow
Ist diese KB legal? Ja, lerne warum
Lizenziert unter: CC-BY-SA with attribution
Nicht verbunden mit Stack Overflow
Ist diese KB legal? Ja, lerne warum