İlgili Verileri Kaydetme

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

İpucu

Bu makalenin örneğini daha sonra GitHub.

Yeni varlıkların grafı ekleme

Birkaç yeni ilgili varlık sanız, bunlardan birini bağlama eklemek diğerlerinin de eklenmelerine neden olur.

Aşağıdaki örnekte, blog ve ilgili üç gönderi veritabanına eklenir. Gönderiler, gezinti özelliği aracılığıyla ulaşılabilir olduğundan bulunur ve Blog.Posts eklenir.

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();
}

İpucu

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 izne sahip bir varlığın gezinti özelliğinden yeni bir varlığa başvurursanız varlık keşfedilen ve veritabanına eklenir.

Aşağıdaki örnekte varlık, post veritabanından getirilen Posts varlığın blog özelliğine eklenmiştir.

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ştirirsiniz, veritabanındaki yabancı anahtar sütununda buna karşılık gelen değişiklikler yapılır.

Aşağıdaki örnekte, gezinti özelliği değerine ayarlanmış olduğundan varlık yeni varlığa postblog ait olacak şekilde Blogblog güncelleştirilir. Ayrıca, bağlam () tarafından zaten izlenen bir varlığın gezinti özelliği tarafından başvurulan yeni bir varlık olduğundan veritabanına da blogpost 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 gezintisi ayarerek veya ilgili varlığı koleksiyon null gezintisi'ne kaldırarak bir ilişkiyi kaldırabilirsiniz.

İlişkide yapılandırılan basamaklı silme davranışına göre bir ilişkinin kaldırılması bağımlı varlık üzerinde yan etkilere neden olabilir.

Varsayılan olarak, gerekli ilişkiler için basamaklı silme davranışı yapılandırılır ve alt/bağımlı varlık veritabanından silinir. İsteğe bağlı ilişkiler için, basamaklı silme varsayılan olarak yapılandırılmaz, ancak yabancı anahtar özelliği null olarak ayarlanır.

İlişkilerin gerekliliğini yapılandırma hakkında bilgi edinmek için bkz. Gerekli ve İsteğe Bağlı İlişkiler.

Basamaklı silme davranışlarının nasıl çalışma, açıkça nasıl yapılandırıldıkları ve kurala göre nasıl seçildikleri hakkında daha fazla bilgi için bkz. Basamaklı Silme.

Aşağıdaki örnekte, ile arasındaki ilişkide basamaklı silme yapılandırıldığından BlogPost varlık post 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();
}