Таблица CodeFirst не генерируется, как я ожидал - PullRequest
1 голос
/ 19 октября 2011

У меня есть класс с именем Status, и у меня также есть класс ApplicantPositionHistory, который имеет OldStatus и NewStatus.

Однако таблица генерируется так:

enter image description here

Я ожидал бы, что в таблице есть newstatusid и oldstatusid, которые должны быть внешними ключами, но при этом эти два столбца были продублированы.

 public class ApplicationPositionHistory
    {
        [DatabaseGenerated(System.ComponentModel.DataAnnotations.DatabaseGeneratedOption.Identity)]
        public int ApplicationPositionHistoryID { get; set; }

        public ApplicantPosition applicantPosition { get; set; }

        [Column("oldStatusID")]
        public int oldStatusID { get; set; }

        [Column("newStatusID")]
        public int newStatusID { get; set; }

        public Status oldStatus { get; set; }

        public Status newStatus { get; set; }

        [StringLength(500, MinimumLength = 3, ErrorMessage = "Comments  should not be longer than 500 characters.")]
        [Display(Name = "Comments")]
        public string comments { get; set; }

        [DisplayFormat(DataFormatString = "{0:d}", ApplyFormatInEditMode = true)]
        [Display(Name = "Date")]     
        public DateTime dateModified { get; set; }
    }

    public class Status
    {
        [DatabaseGenerated(System.ComponentModel.DataAnnotations.DatabaseGeneratedOption.Identity)]
        public int StatusID { get; set; }

        [StringLength(40, MinimumLength = 3, ErrorMessage = "Status  should not be longer than 20 characters.")]
        [Display(Name = "Status")]
        public string status { get; set; }

    }

1 Ответ

1 голос
/ 19 октября 2011

Я думаю, что проблема заключается в вашем нестандартном соглашении по именованию, которое приводит к проблеме при применении соглашений о сопоставлении по умолчанию, поэтому ваши столбцы FK не связаны со свойствами навигации, а EF создает новые.

Попробуйте вручную связать свойства навигации с вашими свойствами FK:

[ForeignKey("oldStatusID")]
public Status oldStatus { get; set; }

[ForeignKey("newStatusID")]
public Status newStatus { get; set; }
...