这是我在MVC项目中使用的模型类Employee
。
public class Employee
{
[Required]
public string Name { get; set; }
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int EmployeeID { get; set; }
[DataType(DataType.EmailAddress)]
public string Email { get; set; }
public int SkillID { get; set; }
[Display(Name="Employee Skill")]
public Skill EmployeeSkill { get; set; }
public virtual List<Skill> EmployeeSkills { get; set; }
}
如您所见,我已将[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
属性添加到EmployeeID
属性中。但是,当我尝试插入而未指定EmployeeID
作为输入值时,我收到以下错误...
无法将值NULL插入“EmployeeID”列,表'MVCTheRightWayContext-20141028005000.dbo.Employees';列不允许空值。 INSERT失败。 该语句已终止。
答案 0 :(得分:6)
您必须添加[Key]注释:
public class Employee
{
[Required]
public string Name { get; set; }
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int EmployeeID { get; set; }
[DataType(DataType.EmailAddress)]
public string Email { get; set; }
public int SkillID { get; set; }
[Display(Name="Employee Skill")]
public Skill EmployeeSkill { get; set; }
public virtual List<Skill> EmployeeSkills { get; set; }
}
答案 1 :(得分:0)
如果存在“更智能”的方式,请对此答案发表评论。
我发现我无法将上述两个注释(Key和DatabaseGeneratedOption.Identity)应用于已经存在的现有字段。
首先,我需要通过删除实体模型来删除SQL中的表,然后在SQL中使用实体框架重新创建表,以便将我的字段标记为PK并设置身份规范。
希望这可以节省一些人抓头的时间。