Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 实体框架:Find在存储过程之后返回null_C#_Sql Server_Entity Framework_Stored Procedures - Fatal编程技术网

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

C# 实体框架:Find在存储过程之后返回null,c#,sql-server,entity-framework,stored-procedures,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 stor

我有一个将数据插入表的存储过程。我在存储过程语句之后立即使用
.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的功能。所以基本上我是在质疑一些不存在的东西

检查存储过程后,我发现它具有自动id创建功能,因此我实际上并没有查询我认为有id的项。
SaveChanges
DBContext
上被调用会确保它也亮起。

请,显示您的SP以及如何调用它,就像您需要在SP将上下文中的更改与数据存储同步后调用SaveChanges一样。我不这么认为,
insert\u book
做什么(可以显示代码)<代码> BooSDB。书籍<代码>应该是<代码> dBSET ,看来您对<代码>插件StutoBoo.<代码>的调用并没有将添加的书附加到<代码> dBSET 内存中,直到调用了<代码> SaveRechange < /C> > < <代码> dBrave >,这就是为什么找不到它。你会得到很多免费的。