EntityFramework Migrations提供了一种扩展方法DbSet<T>
,专门用于在迁移期间播种数据:
void AddOrUpdate<TEntity>(this IDbSet<TEntity> set, params TEntity[] entities);
Run Code Online (Sandbox Code Playgroud)
在"常规"代码中使用它是否安全,即不能在迁移期间播种数据?
var blog = ...//detached instance from a request
using (var context = new BloggingContext())
{
context.Blogs.AddOrUpdate(blog);
context.SaveChanges();
}
Run Code Online (Sandbox Code Playgroud)
它似乎工作正常,但我想知道它与"传统的"'分离实体'sceario相比是否有任何缺点 - 例如,如MSDN(文章的最后部分)所述:
using (var context = new BloggingContext())
{
context.Entry(blog).State = blog.BlogId == 0 ?
EntityState.Added :
EntityState.Modified;
context.SaveChanges();
}
Run Code Online (Sandbox Code Playgroud)