2017-02-28 10 views
0

データをテーブルに挿入するストアドプロシージャがあります。私は.Findのストアドプロシージャステートメントの直後に照会して、挿入が行われたかどうかを確認し、nullを返します。後で別のDbContextで照会すると、それがあるので、あたかもコンテキストをリフレッシュする必要があるかのようです。Entity Framework:Findはストアドプロシージャの後にnullを返します。

いくつかのサンプルコード:

string name = "Awesome book"; 
string id = Guid.NewGuid().ToString(); 

// Entity Framework context 
BooksDb db = new BooksDb(); 

// call to stored procedure 
db.insert_book(id, name); 

// check if it's there 
book b = db.books.Find(id); // b is null 

は私が私が探しているIDを持つアイテムを見つけるために得るために何かをリフレッシュする必要がありますか?

更新:私は以下のコメントのおかげでそれを理解しました。実際に私が挿入していると思っていたIDを探していましたが、ストアドプロシージャには自動IDが作成されていました。だから基本的に私は存在しなかったものを照会していました。 :)

+0

SPを表示してどのように呼び出すのですか – octavioccl

+0

spの後にSaveChangesを呼び出して、コンテキスト内の変更をデータストアと同期させる必要があるようです。 – Aldo

+0

私はそうは思わない、Aldo –

答えて

0

ストアドプロシージャを確認した後、私はそれが自動ID作成をしていると思ったので、実際にIDを持っていると思っていた項目を照会していませんでした。 DBContextで呼び出されているSaveChangesも点灯することを確認します。

関連する問題