我看到两个添加和删除实体的代码,我不知道哪个是最好的方法,这两者有什么区别。 一个是这个(添加):实体框架添加和删除实体?
using (var context = new BloggingContext())
{
var blog = new Blog { Name = "ADO.NET Blog" };
context.Blogs.Add(blog);
context.SaveChanges();
}
,另一个是这样的:
using (var context = new BloggingContext())
{
var blog = new Blog { Name = "ADO.NET Blog" };
context.Entry(blog).State = EntityState.Added;
context.SaveChanges();
}
,我读到呼吁DbSet Add方法把实体纳入增加的状态。
根据这个我觉得上面的两个代码几乎是一样的。如果不是,请告诉我差异。
而且我发现了另一个代码:
public virtual void Add(T entity)
{
DbEntityEntry dbEntityEntry = DbContext.Entry(entity);
if (dbEntityEntry.State != EntityState.Added)
{
dbEntityEntry.State = EntityState.Added;
}
else
{
DbSet.Add(entity);
}
}
,如果它真的呼吁DbSet Add方法把实体纳入增加的状态,那么我认为这是在代码中没有区别的,如果和别的块,所以这里有什么意义。
并从上面三个代码中增加实体的最佳方式。
而且在我所怀疑的另一个代码是什么,是在下面的代码使用其他块:使用代码波纹管的ASP .NET
public virtual void Delete(T entity)
{
DbEntityEntry dbEntityEntry = DbContext.Entry(entity);
if (dbEntityEntry.State != EntityState.Deleted)
{
dbEntityEntry.State = EntityState.Deleted;
}
else
{
DbSet.Attach(entity);
DbSet.Remove(entity);
}
}
好问题,我怀疑直接修改州属性不会被认为是最好的做法,但他们可能会做同样的事情。由于我不确定,我会让其他人回答:) – BradleyDotNET