Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/310.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/85.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# 实体框架未检测到现有导航属性,并尝试重新添加该属性_C#_Sql_Sql Server_Entity Framework_Asp.net Core - Fatal编程技术网

C# 实体框架未检测到现有导航属性,并尝试重新添加该属性

C# 实体框架未检测到现有导航属性,并尝试重新添加该属性,c#,sql,sql-server,entity-framework,asp.net-core,C#,Sql,Sql Server,Entity Framework,Asp.net Core,我定义的模型和关系与 当我有一个现有的blog并想向其中添加新的posts时,entity framework会尝试为每个post添加一个新的blog。例如: var blog = new Blog(){ Name = "MyBlog" }; context.Blogs.add(blog); context.SaveChanges(); // now I want to add a post to that blog var post = new Post() { Name = "MyFirs

我定义的模型和关系与

当我有一个现有的
blog
并想向其中添加新的
post
s时,entity framework会尝试为每个
post
添加一个新的
blog
。例如:

var blog = new Blog(){ Name = "MyBlog" };
context.Blogs.add(blog);
context.SaveChanges();

// now I want to add a post to that blog
var post = new Post() { Name = "MyFirstPost", Blog = blog };
context.Posts.add(post);
context.SaveChanges();
此时,实体框架试图用
Name=“MyBlog”
创建一个新的
Blog
,但没有意识到我已经有了
Blog

因此,当我查看
context.SaveChanges
上的日志时,我会看到以下内容:

INSERT INTO [Blogs] ([ID], [Name])
VALUES (@p0, @p1);
在这一点上,它引发了一个例外,如下所示:

当identity_insert设置为OFF时,无法在表“Blogs”中插入identity列的显式值

显然,它正在尝试添加一个新的
博客
,其id为
id=0
,但由于
id
是自动生成的,因此失败了


因此,我的问题是为什么EntityFramework不识别现有的
博客
,并尝试添加一个新博客?

保存后阅读博客(设置Id)


您应该将文章添加到现有的Blog对象中,而不是尝试将其直接插入到Posts集合中。您能详细说明一下吗?示例?Herohtar的意思是
blog.Posts.Add(new Post(){Name=“x”})
或类似的indeed我的观点是它背后的理性是什么?您发布的内容很有效,我更感兴趣的是,为什么我发布的代码会导致创建一个新的
博客
条目。
var blog = new Blog(){ Name = "MyBlog" };
context.Blogs.Add(blog);
context.SaveChanges();

blog = db.Blogs
   .OrderBy(b => b.BlogId)
   .First();

var post = new Post() { Name = "MyFirstPost", Blog = blog };
context.Posts.Add(post);
context.SaveChanges();