Understanding ForeignKey attribute in entity framework code first

前端 未结 3 1871
你的背包
你的背包 2020-11-29 03:31

See the following post for some background:

Entity framework one to zero or one relationship without navigation property

I had always thought that Fore

3条回答
  •  再見小時候
    2020-11-29 03:56

    The required side of the 1..0 relationship MemberDataSet should not have a FK to DeferredData. Instead, DeferredData's PK should also be a FK to MemberDataSet (known as shared primary key)

    public class MemberDataSet
    {
        [Key]
        [DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]
        public int Id { get; set; }
    
        public virtual DeferredData DeferredData { get; set; }
    }
    
    public class DeferredData
    {
        // DeferredData.Id is both the PK and a FK to MemberDataSet
        [Key]
        [DatabaseGenerated( DatabaseGeneratedOption.None )]
        [ForeignKey( "MemberDataSet" )]
        public int Id { get; set; }
    
        [Required]
        public virtual MemberDataSet MemberDataSet { get; set; }
    }
    

    Fluent API:

    modelBuilder.Entity()
        .HasOptional( mds => mds.DeferredData )
        .WithRequired()
        .WillCascadeOnDelete();
    

提交回复
热议问题