使用实体框架设置1对1的关系

时间:2015-03-25 11:01:23

标签: entity-framework entity-framework-6

如何为ContactId设置模型构建器?

CountryCompanyAssignment与联系人有关系。

当我删除CountryCompanyAssignment时,我不希望联系人丢失。

当我创建CountryCompanyAssignment时,我还需要一个联系人来保存CountryCompanyAssignment。

我需要设置CountryCompanyAssignment和ContactId之间的关系,因为当我删除CountryCompanyAssignment时,我得到一个错误,说我应该为联系人添加一个外键以使其工作。

这就是我的尝试:

 modelBuilder.Entity<CountryCompanyAssignment>().HasRequired(e => e.Contact).WithRequiredDependent(e => e.);

 [Key]
        [Column(Order = 1)]
        public int Id { get; set; }

        [Key]
        [Column(Order = 1)]
        public string ContactId { get; set; }

        [Required]
        public string Test{ get; set; }

        [Required]
        public virtual Contact Contact { get; set; }

1 个答案:

答案 0 :(得分:0)

如果你使用WithRequired,其中一个PK必须是FK:

  • Contact.Id if WihtRequiredPrincipal
  • Company.Id if WithRequiredDependent

如果您想要公开并选择 fk,您必须:

modelBuilder.Entity<Company>().HasRequired(x => x.Contact). WithMany().HasForeignKey(y => y.ContactId);