我看到兩個添加和刪除實體的代碼,我不知道哪個是最好的方法,這兩者有什麼區別。 一個是這個(添加):實體框架添加和刪除實體?
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