İlgili Verileri Kaydetme
Yalıtılmış varlıklara ek olarak, modelinizde tanımlanan ilişkileri de kullanabilirsiniz.
Bahşiş
Bu makalenin örneğini GitHub'da görüntüleyebilirsiniz.
Yeni varlıkların grafiğini ekleme
Birkaç yeni ilgili varlık oluşturursanız, bunlardan birini bağlama eklemek diğerlerinin de eklenmesine neden olur.
Aşağıdaki örnekte blog ve ilgili üç gönderinin tümü veritabanına eklenir. Gönderiler bulunur ve eklenir, çünkü bunlara gezinti özelliği aracılığıyla Blog.Posts
erişilebilir.
using (var context = new BloggingContext())
{
var blog = new Blog
{
Url = "http://blogs.msdn.com/dotnet",
Posts = new List<Post>
{
new Post { Title = "Intro to C#" },
new Post { Title = "Intro to VB.NET" },
new Post { Title = "Intro to F#" }
}
};
context.Blogs.Add(blog);
await context.SaveChangesAsync();
}
Bahşiş
Yalnızca tek bir varlığın durumunu ayarlamak için EntityEntry.State özelliğini kullanın. Örneğin, context.Entry(blog).State = EntityState.Modified
.
İlgili varlık ekleme
Bağlam tarafından zaten izlenen bir varlığın gezinti özelliğinden yeni bir varlığa başvurursanız, varlık bulunur ve veritabanına eklenir.
Aşağıdaki örnekte varlık, veritabanından post
getirilen varlığın Posts
özelliğine eklendiğinden blog
eklenir.
using (var context = new BloggingContext())
{
var blog = await context.Blogs.Include(b => b.Posts).FirstAsync();
var post = new Post { Title = "Intro to EF Core" };
blog.Posts.Add(post);
await context.SaveChangesAsync();
}
İlişkileri değiştirme
Bir varlığın gezinti özelliğini değiştirirseniz, veritabanındaki yabancı anahtar sütununda ilgili değişiklikler yapılır.
Aşağıdaki örnekte, post
gezinti özelliği işaret blog
etmek üzere ayarlandığından varlık yeni blog
varlığa Blog
ait olacak şekilde güncelleştirilir. blog
Ayrıca, bağlam (post
) tarafından zaten izlenen bir varlığın gezinti özelliği tarafından başvurulmuş yeni bir varlık olduğundan veritabanına eklenecektir.
using (var context = new BloggingContext())
{
var blog = new Blog { Url = "http://blogs.msdn.com/visualstudio" };
var post = await context.Posts.FirstAsync();
post.Blog = blog;
await context.SaveChangesAsync();
}
İlişkileri kaldırma
başvuru gezintisini olarak ayarlayarak veya ilgili varlığı koleksiyon gezintisinden null
kaldırarak ilişkiyi kaldırabilirsiniz.
İlişkinin kaldırılması, ilişkide yapılandırılan art arda silme davranışına göre bağımlı varlık üzerinde yan etkilere neden olabilir.
Varsayılan olarak, gerekli ilişkiler için art arda silme davranışı yapılandırılır ve alt/bağımlı varlık veritabanından silinir. İsteğe bağlı ilişkiler için, art arda silme varsayılan olarak yapılandırılmaz, ancak yabancı anahtar özelliği null olarak ayarlanır.
İlişkilerin gerekliliğinin nasıl yapılandırılabildiğini öğrenmek için bkz . Gerekli ve İsteğe Bağlı İlişkiler .
Art arda silme davranışlarının nasıl çalıştığı, açıkça nasıl yapılandırılabildiği ve kurala göre nasıl seçildiği hakkında daha fazla bilgi için bkz . Art Arda Silme .
Aşağıdaki örnekte, ile Post
arasındaki Blog
ilişkide art arda silme yapılandırıldığından post
varlık veritabanından silinir.
using (var context = new BloggingContext())
{
var blog = await context.Blogs.Include(b => b.Posts).FirstAsync();
var post = blog.Posts.First();
blog.Posts.Remove(post);
await context.SaveChangesAsync();
}