Entity Frameworks создает автоматический столбец - PullRequest
1 голос
/ 27 мая 2020

У меня проблема с Entity Framework. Entity Framework генерирует автоматический столбец на sql -сервере, и я не понимаю, как выполнить операцию вставки в этом столбце с определенными параметрами. Например, в классе Teacher

   public class Teacher
   {
    [Key]
    public String Email { set; get; }

    public String Name { set; get; }

    public List<TeacherBasicInformation> Teacher_Basic_Information { set; get; } = new List<TeacherBasicInformation>();

    public String Password { set; get; }

    public List<Course> course { set; get; } = new List<Course>();
    [JsonIgnore]
    public String JWT_Token { set; get; }

    [NotMapped]
    [Compare("Password")]

    public String ConfrimPassword { set; get; }

   }

И в классе TeacherBasicInformation

 public class TeacherBasicInformation
 {
    [Key]

    public int ID { set; get; }

    [Required]
    [MaxLength(20)]
    public String Phone { set; get; }
    [Required]
    [MaxLength(100)]
    public String Address { set; get; }
}

После миграции на сервере sql в таблице TeacherBasicInformation создается автоматический столбец с именем TeacherEmail '. Как я могу вставить данные в этот столбец с помощью формы в asp. net core.

Ответы [ 2 ]

1 голос
/ 27 мая 2020

Чтобы предотвратить автоматическое создание столбцов для FK, используйте [ForeignKey("YourForeignKey")] в связанной таблице в классе сущности:

public int TeacherId { get; set; }        

[ForeignKey("TeacherId")]
public virtual Teacher Teacher { get; set; }

Надеюсь, это поможет.

1 голос
/ 27 мая 2020

Похоже, у вас есть столбец электронной почты, настроенный как столбец первичного ключа в вашем классе Teacher и связанный столбец базы данных. Если это так, у вас возникнут проблемы с этим, поскольку он должен быть уникальным для этой записи, а первичные ключи не предназначены для изменения. Это может быть сделано в определенных сценариях ios, но это не лучшая практика.

Возможно, лучший подход - иметь атрибут [Key] в свойстве public int Id { get; set; }, чтобы их первичный ключ теперь был дискретный номер вместо адреса электронной почты. Затем вы можете получить доступ, установить и обновить адрес электронной почты для каждой записи, вообще не вмешиваясь в ключ.

...