ADO.NET Entity Frameworkではストアドプロシージャを実行できません

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

質問

以下に貼り付けた、単純なパラメータのないストアドプロシージャを作成しました。ストアドプロシージャをエンティティモデルにインポートし、関数インポートを作成しました。モデル内の関数は作成されないため、ADO.NET Entity Frameworkを使用してこのストアドプロシージャを実行することはできません。 XMLビューで.edmxファイルを開き、このストアドプロシージャに関するエラーがないことを確認しました。何がおかしいのですか? Entity Frameworkからそのような単純なストアドプロシージャを呼び出すことは本当に不可能ですか?このストアドプロシージャがレコードセットや値を返す必要がないことを確認して、インポート関数の戻り値の型を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。

私は実際にこれに私の決議を投稿するためにここに来て、同時にあなたの反応を見ました。このコードは実際にはエンティティフレームワークの接続を使用し、モデルにインポートしたストアドプロシージャを実行します。マイクロソフトは開発者たちにLINQ to SQLや他のDALジェネレータの代わりにEntity Frameworkを使うよう働きかけていますが、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機能に行きます。

詳細はこちら:

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



Related

ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
このKBは合法ですか? はい、理由を学ぶ
ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
このKBは合法ですか? はい、理由を学ぶ