我必须使用哪一个,MyDbContext.Blogs.Add(ablog) 或 MyDbContext.Add(ablog)?

Which one must I use, MyDbContext.Blogs.Add(ablog) or MyDbContext.Add(ablog)?

考虑一下我有一个上下文 MyDbContext 继承了 EFCore 2.0 的 DbContextBlogs 是一个 DbSet<Blog>Blog 是一个实体模型。

当我添加一个新的 Blog 实例时,ablogBlogs,我必须使用哪一个?

MyDbContext.Add(ablog);MyDbContext.Blogs.Add(ablog);?

Find怎么样?

MyDbContext.Find<Blog>(1);MyDbContext.Blogs.Find(1);?

使用其中一种比使用另一种有什么好处吗?

通过 DbContext 直接添加数据是 Entity Framework Core 中 DbContext 的新增功能,并且在之前版本的 Entity Framework 中没有等效项,其中 DbContext 可用(即 EF 4.1 及更高版本)。

但是没有区别because:

When you use either version of Add the context begins tracking the entity that was passed in to the method and applies an EntityState value of Added to it. The context also applies the same EntityState value of Added to all other objects in the graph that aren't already being tracked by the context.

还有一个通用版本的 Add (Add<TEntity>(TEntity entity)) 但是 Visual Studio 也建议您可以省略类型参数,因为编译器将从传递的参数推断类型进入方法。