Impossible d'exécuter une procédure stockée avec ADO.NET Entity Framework

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

Question

J'ai créé une procédure stockée simple sans paramètre que j'ai collée ci-dessous. J'ai importé la procédure stockée dans mon modèle d'entité et créé une importation de fonction. La fonction dans le modèle n'est jamais créée et je ne parviens pas à exécuter cette procédure stockée à l'aide de ADO.NET Entity Framework. J'ai ouvert le fichier .edmx en vue XML et j'ai confirmé qu'il n'y avait pas d'erreur concernant cette procédure stockée. Qu'est-ce que je fais mal? Est-il vraiment impossible d'appeler une procédure stockée aussi simple depuis Entity Framework? J'ai défini le type de retour pour la fonction d'importation sur Aucun car cette procédure stockée n'a pas besoin de renvoyer des jeux d'enregistrements ou des valeurs.

Procédure stockée:

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 essayant d'exécuter une procédure stockée:

Dim db As New MilkModel

db.Inventory_Snapshot_Create()

Réponse acceptée

Merci, pmarflee.

En fait, je suis venu ici pour poster ma résolution à ce sujet et j'ai vu votre réponse au même moment. Ce code utilise en réalité la connexion du framework d'entité et exécute la procédure stockée que j'ai importée dans le modèle. Microsoft continue de nous pousser les développeurs à utiliser Entity Framework au lieu de LINQ to SQL et d’autres générateurs DAL, mais EF n’est vraiment pas ce qu’il faut. Je ne l'utiliserai pas dans les projets futurs tant que la solution ne sera pas plus complète.

Voici ce que j'ai fini par faire:

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

Réponse populaire

Tout d'abord, vous l'ajoutez au modèle, puis vous accédez au conteneur d'entités, puis à la fonction Importer.

Détails complets ici:

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



Related

Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow