2017-02-28 123 views
0

我有一个将数据插入表的存储过程。在存储过程语句.Find之后立即查询是否发生了插入,并且它返回null。如果我稍后再询问另一个DbContext,它就在那里,所以就好像我需要刷新上下文。实体框架:在存储过程后返回空值

一些示例代码:

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的项目。 SaveChanges被呼叫DBContext确保它也点亮。