我必须使用哪一个,MyDbContext.Blogs.Add(ablog) 或 MyDbContext.Add(ablog)?
Which one must I use, MyDbContext.Blogs.Add(ablog) or MyDbContext.Add(ablog)?
考虑一下我有一个上下文 MyDbContext
继承了 EFCore 2.0 的 DbContext
。
Blogs
是一个 DbSet<Blog>
而 Blog
是一个实体模型。
当我添加一个新的 Blog
实例时,ablog
到 Blogs
,我必须使用哪一个?
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 也建议您可以省略类型参数,因为编译器将从传递的参数推断类型进入方法。
考虑一下我有一个上下文 MyDbContext
继承了 EFCore 2.0 的 DbContext
。
Blogs
是一个 DbSet<Blog>
而 Blog
是一个实体模型。
当我添加一个新的 Blog
实例时,ablog
到 Blogs
,我必须使用哪一个?
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
thecontext
begins tracking the entity that was passed in to the method and applies anEntityState
value of Added to it. The context also applies the sameEntityState
value of Added to all other objects in the graph that aren't already being tracked by thecontext
.
还有一个通用版本的 Add
(Add<TEntity>(TEntity entity)
) 但是 Visual Studio 也建议您可以省略类型参数,因为编译器将从传递的参数推断类型进入方法。