我在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中使用表单将数据插入此列。
答案 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; }
希望这会有所帮助。