Quantcast
Channel: Development With A Dot
Viewing all articles
Browse latest Browse all 404

Entity Framework Code First One to One With Cascade Delete

$
0
0

I recently had to figure how to achieve cascade deletes on a one to one mapping. The solution, I soon found out, required fluent configuration.

Here’s some simple entities:

   1:publicclass Principal
   2: {
   3:public Int32 PrincipalId { get; set; }
   4:publicvirtual Detail Detail { get; set; }
   5://other properties go here
   6: }
   7:  
   8:publicclass Detail
   9: {
  10:     [Key]
  11:     [ForeignKey("Principal")]
  12:public Int32 PrincipalId { get; set; }
  13:     [Required]
  14:public Principal Principal { get; set; }
  15://other properties go here
  16: }

The fluent configuration needs to be:

   1:protectedoverridevoid OnModelCreating(DbModelBuilder modelBuilder)
   2: {
   3:     modelBuilder.Entity<Principal>().HasOptional(x => x.Detail).WithRequired(x => x.Principal).WillCascadeOnDelete(true);
   4:
   5:base.OnModelCreating(modelBuilder);
   6: }

And that’s it!

In a nutshell:

  • Principal has an optional Detail, lazy loaded;
  • Detail has a required Principal and it gets its primary key from it;
  • When deleting a Principal instance, EFCF will also delete the Detail.

Viewing all articles
Browse latest Browse all 404

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>