繁体   English   中英

获取实体框架中多对多关系的ICollection数据

[英]Get ICollection data for many-to-many relationship in Entity framework

我很难在实体框架中获得ICollection的价值。 我正在使用版本6。

类Navigation_Functions

[Table("Navigation_Functions")]
public class Navigation_Functions
{
    public Navigation_Functions()
    {}

    [Key]
    public int Function_ID { get; set; }

    [StringLength(250)]
    [Required(ErrorMessage = "Required Title")]
    [Display(Name = "Function Title")]
    public string FunctionName { get; set; }

    [Required(ErrorMessage = "Required Hierarchy Level")]
    [Display(Name = "Hierarchy Level")]
    public int Hierarchy_Level { get; set; }

    public ICollection<Navigation_FunctionController> Navigation_FunctionController { get; set; }
}

类Navigation_Controller

[Table("Navigation_FunctionController")]
public class Navigation_FunctionController
{
    public Navigation_FunctionController()
    { }

    [Key]
    public int ControllerID { get; set; }

    [StringLength(250)]
    [Required]
    public string ControllerName { get; set; }

    public ICollection<Navigation_Functions> Navigation_Functions { get; set; }

}

中产阶级打破多对多关系

[Table("Navigation_FunctionInController")]
public class Navigation_FunctionInController
{
    public Navigation_FunctionInController() 
    { 

    }

    [Key]
    public int FunctionInController_ID { get; set; }

    [Key]
    [ForeignKey("Navigation_Functions")]
    public int Function_ID { get; set; }

    [Key]
    [ForeignKey("Navigation_FunctionController")]
    public int ControllerID { get; set; }

    public Navigation_FunctionController Navigation_FunctionController { get; set; }
    public Navigation_Functions Navigation_Functions { get; set; }

}

所以当我运行以下代码时,我获得了navigation_function的所有navigation_controller

    public IEnumerable<Navigation_Functions> GetAllFunctions()
    {
        using(var _uow = new FunctionsNavigation_UnitOfWork())
        {
            var entities = _uow.Navigation_Functions_Repository.GetAll();

            return entities.ToList();
        }
    }

我将虚拟添加为

public virtual ICollection<Navigation_Functions> Navigation_Functions { get; set; }
public virtual ICollection<Navigation_FunctionController> Navigation_FunctionController { get; set; }

而且我收到以下错误以读取数据 在此处输入图片说明

您无需创建多对多关系表,实体框架将为您完成此工作。 您所需要做的就是将您的属性声明为虚拟属性,全部使用include方法。 这里这里更多细节

确保将ICollection方法设置为“虚拟”,例如,公共虚拟ICollection课程 组; }

这是一个示例: http : //www.entityframeworktutorial.net/code-first/configure-many-to-many-relationship-in-code-first.aspx

请记住,如果交集表包含一个或多个属性(不属于主键),则不要创建交集表,只需在两个实体中使用ICollection即可。 但是,如果相交中存在一个或多个属性,则创建相交类。 EF设计器就是这样工作的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM