Aracılığıyla paylaş


İlgili Verileri Kaydetme

Yalıtılmış varlıklara ek olarak, modelinizde tanımlanan ilişkileri de kullanabilirsiniz.

Tavsiye

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 bulunup eklenir, çünkü bunlara Blog.Posts navigasyon özelliği aracılığıyla 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();
}

Tavsiye

Yalnızca tek bir varlığın durumunu ayarlamak için EntityEntry.State özelliğini kullanın. Örneğin, context.Entry(blog).State = EntityState.Modified.

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 post varlığı, veritabanından alınan Posts varlığının blog özelliğine eklendiğinden, post varlığı 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();
}

Değişen ilişkiler

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 varlığı güncellenerek blog gezinti özelliği Blog'ü göstermek üzere ayarlandığı için yeni blog varlığına ait olur. Dikkat edin ki blog, bağlam (post ) tarafından izlenen bir varlığın gezinim özelliği tarafından başvurulan yeni bir varlık olduğu için 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ırmak

Başvuru gezintisini null olarak ayarlayarak veya ilgili varlığı koleksiyon gezintisinden 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, Blog ile Post arasındaki ilişkide kademeli 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();
}