Aracılığıyla paylaş


İ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);
    context.SaveChanges();
}

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.

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 = context.Blogs.Include(b => b.Posts).First();
    var post = new Post { Title = "Intro to EF Core" };

    blog.Posts.Add(post);
    context.SaveChanges();
}

İ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 blogetmek ü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 = context.Posts.First();

    post.Blog = blog;
    context.SaveChanges();
}

İlişkileri kaldırma

başvuru gezintisini olarak ayarlayarak veya ilgili varlığı koleksiyon gezintisinden nullkaldı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 Postarası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 = context.Blogs.Include(b => b.Posts).First();
    var post = blog.Posts.First();

    blog.Posts.Remove(post);
    context.SaveChanges();
}