实体框架创建自动列

时间:2020-05-26 21:28:18

标签: entity-framework

我在Entity Framework中遇到问题。实体框架正在sql-server中生成自动列,但我没有得到如何在该particuler列中进行插入操作。 例如在老师班上,

   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 个答案:

答案 0 :(得分:1)

您似乎在Teacher类中将email列设置为主键列,并在数据库中设置了相关列。如果真是这样,您将遇到麻烦,因为它对于该记录将是唯一的,并且主键并非旨在更改。可以在某些情况下完成此操作,但这不是最佳实践。

也许更好的方法是在[Key]的属性上具有public int Id { get; set; }属性,因此它们的主键现在是离散数字而不是电子邮件地址。然后,您可以访问,设置和更新每个记录上的电子邮件地址,而完全不会干扰密钥。

答案 1 :(得分:1)

为了防止自动生成FK列,请在实体类中的相关表上使用[ForeignKey("YourForeignKey")]

public int TeacherId { get; set; }        

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

希望这会有所帮助。