Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
DbContext.SaveChanges() , EF ile veritabanında yapılan değişiklikleri kaydetmeye yönelik iki teknikten biridir. Bu yöntemle, bir veya daha fazla izlenen değişiklik (ekleme, güncelleştirme, silme) gerçekleştirir ve ardından yöntemini çağırarak SaveChanges bu değişiklikleri uygularsınız. Alternatif olarak, değişiklik izleyicisi dahil olmadan ExecuteUpdate ve ExecuteDelete kullanılabilir. Bu iki tekniğin giriş niteliğindeki karşılaştırması için veri kaydetmeye ilişkin Genel Bakış sayfasına bakın.
Tavsiye
Bu makalenin örneğini GitHub'da görüntüleyebilirsiniz.
Veri Ekleme
DbSet<TEntity>.Add Varlık sınıflarınızın yeni örneklerini eklemek için yöntemini kullanın. çağrısı yaptığınızda DbContext.SaveChanges()veriler veritabanına eklenir:
using (var context = new BloggingContext())
{
var blog = new Blog { Url = "http://example.com" };
context.Blogs.Add(blog);
await context.SaveChangesAsync();
}
Tavsiye
Add, Attach ve Update yöntemlerinin tümü, İlgili Veriler bölümünde açıklandığı gibi, kendilerine geçirilen varlıkların tam grafiği üzerinde çalışır. Alternatif olarak, EntityEntry.State özelliği yalnızca tek bir varlığın durumunu ayarlamak için kullanılabilir. Örneğin, context.Entry(blog).State = EntityState.Modified.
Verileri Güncelleştirme
EF, bağlam tarafından izlenen mevcut bir varlıkta yapılan değişiklikleri otomatik olarak algılar. Bu, veritabanından yüklediğiniz/sorguladığınız varlıkları ve daha önce eklenip veritabanına kaydedilmiş varlıkları içerir.
Özelliklere atanan değerleri değiştirmeniz ve çağrısı SaveChangesyapmanız yeterlidir:
using (var context = new BloggingContext())
{
var blog = await context.Blogs.SingleAsync(b => b.Url == "http://example.com");
blog.Url = "http://example.com/blog";
await context.SaveChangesAsync();
}
Veri Silme
DbSet<TEntity>.Remove Varlık sınıflarınızın örneklerini silmek için yöntemini kullanın:
using (var context = new BloggingContext())
{
var blog = await context.Blogs.SingleAsync(b => b.Url == "http://example.com/blog");
context.Blogs.Remove(blog);
await context.SaveChangesAsync();
}
Eğer varlık veritabanında zaten mevcutsa, SaveChanges sırasında silinecektir. Varlık henüz veritabanına kaydedilmediyse (eklenmiş olarak izleniyorsa), bağlamdan kaldırılır ve SaveChanges çağrıldığında artık eklenmez.
Tek bir SaveChanges'te Birden Çok İşlem
Birden çok Ekleme/Güncelleştirme/Kaldırma işlemlerini tek bir çağrıda SaveChangesbirleştirebilirsiniz:
using (var context = new BloggingContext())
{
// seeding database
context.Blogs.Add(new Blog { Url = "http://example.com/blog" });
context.Blogs.Add(new Blog { Url = "http://example.com/another_blog" });
await context.SaveChangesAsync();
}
using (var context = new BloggingContext())
{
// add
context.Blogs.Add(new Blog { Url = "http://example.com/blog_one" });
context.Blogs.Add(new Blog { Url = "http://example.com/blog_two" });
// update
var firstBlog = await context.Blogs.FirstAsync();
firstBlog.Url = "";
// remove
var lastBlog = await context.Blogs.OrderBy(e => e.BlogId).LastAsync();
context.Blogs.Remove(lastBlog);
await context.SaveChangesAsync();
}
Uyarı
Çoğu veritabanı sağlayıcısı için SaveChanges işlemseldir. Bu, tüm işlemlerin başarılı veya başarısız olduğu ve hiçbir zaman kısmen uygulanmayacağı anlamına gelir.