代码首先设置两个表之间的一对多关系

时间:2016-01-18 04:47:28

标签: ef-code-first linq-to-entities entity-framework-6 code-first

我有以下几个代表确切表字段的类。设置关系的正确方法是什么,以便我可以使用实体框架工作查询相关字段。

我想使用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; }

    }

1 个答案:

答案 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; }
} 

使用此表删除当前迁移,并使用新代码重新创建它。