我有以下几个代表确切表字段的类。设置关系的正确方法是什么,以便我可以使用实体框架工作查询相关字段。
我想使用Data Annotation,并希望明确指定关系而不是使用基于约定。 每个小组都可以有很多技能。
var SkillsGrouped = da.sv_SkillGroups.Include(" Sv_Skills"); 我收到的错误提到无法映射字段名称,实际上它所抱怨的字段不是任何一个表的一部分。
[Table("sv_Skill")]
public class sv_Skill
{
[Required]
[Key]
public int id { get; set; }
[MaxLength(4000)]
public string skillDescription { get; set; }
public int? skillGroupId { get; set; } //References id column in sv_SkillGroup table
[MaxLength(255)]
public string createdBy { get; set; }
public DateTime? createdOn { get; set; }
[MaxLength(255)]
public string updatedBy { get; set; }
public DateTime? updatedOn { get; set; }
[MaxLength(50)]
public string status { get; set; }
}
[Table("sv_SkillGroup")]
public class sv_SkillGroup
{
[Required]
[Key]
public int id { get; set; }
[MaxLength(4000)]
public string skillGroupDescription { get; set; }
[MaxLength(255)]
public string createdBy { get; set; }
public DateTime? createdOn { get; set; }
[MaxLength(255)]
public string updatedBy { get; set; }
public DateTime? updatedOn { get; set; }
[MaxLength(50)]
public string status { get; set; }
public virtual ICollection<sv_Skill> sv_Skills { get; set; }
}
答案 0 :(得分:0)
我认为您没有在课堂上正确设置多对一关系的一个端点 sv_Skill声明,正确如下:
[Table("sv_Skill")]
public class sv_Skill
{
[Required]
[Key]
public int id { get; set; }
[MaxLength(4000)]
public string skillDescription { get; set; }
public int? skillGroupId { get; set; }
//this new field was added - link to sv_SkillGroup as foreign key via
//field skillGroupId above
public sv_SkillGroup skillGroup { get; set; }
[MaxLength(255)]
public string createdBy { get; set; }
public DateTime? createdOn { get; set; }
[MaxLength(255)]
public string updatedBy { get; set; }
public DateTime? updatedOn { get; set; }
[MaxLength(50)]
public string status { get; set; }
}
使用此表删除当前迁移,并使用新代码重新创建它。