实体框架:在存储过程之后,Find返回null

时间:2017-02-28 21:39:43

标签: c# sql-server entity-framework stored-procedures

我有一个将数据插入表中的存储过程。我在使用.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创建。所以基本上我在查询一些不存在的东西。 :)

1 个答案:

答案 0 :(得分:0)

检查存储过程后,我发现它有自动id创建,所以我实际上并没有查询我认为我有id的项目。在SaveChanges上调用DBContext可确保它也亮起来。