EF 6.1 Code First数据库 - 如何加入

时间:2016-04-01 21:12:44

标签: c# entity-framework

我是Entity Framework的新手。我已经使用Code-First-From-Database方法为lawson数据库中的CUSTORDER和COLINE表生成POCO。这两个POCO如下所示:注意:我删除了大部分字段以便于阅读。

[Table("LAWSON.CUSTORDER")]
public partial class CustOrder
{
    [Key]
    [Column(Order = 0)]
    [DatabaseGenerated(DatabaseGeneratedOption.None)]
    public short COMPANY { get; set; }

    [Key]
    [Column(Order = 1)]
    [DatabaseGenerated(DatabaseGeneratedOption.None)]
    public int ORDER_NBR { get; set; }

    public bool R_STATUS { get; set; }

    [Required]
    [StringLength(2)]
    public string ORDER_TYPE { get; set; }

    public DateTime ORDER_DATE { get; set; }
    public DateTime PRICE_DATE { get; set; }

    . . . 

}



[Table("LAWSON.COLINE")]
public partial class CoLine
{
    [Key]
    [Column(Order = 0)]
    [DatabaseGenerated(DatabaseGeneratedOption.None)]
    public short COMPANY { get; set; }

    [Key]
    [Column(Order = 1)]
    [DatabaseGenerated(DatabaseGeneratedOption.None)]
    public int ORDER_NUMBER { get; set; }

    [Key]
    [Column(Order = 2)]
    [DatabaseGenerated(DatabaseGeneratedOption.None)]
    public int LINE_NBR { get; set; }

    public bool R_STATUS { get; set; }

    . . . 
}

当我使用DBContext检索CustOrder时,我希望它还包括与CustOrder关联的所有CoLine。我想我需要在CustOrder类中添加以下内容。

public virtual IList<CoLine> CoLines { get; set; }

但是如何告诉EF使用CustOrder中的ORDER_NBR列加入这两个表来加入CoLine列中的ORDER_NUMBER?

2 个答案:

答案 0 :(得分:1)

您需要在FK属性上使用ForeignKey属性:

public class CustOrder
{

    [Key]
    [Column(Order = 1)]
    [ForeignKey("CoLines")]
    [DatabaseGenerated(DatabaseGeneratedOption.None)]
    public int ORDER_NBR { get; set; }

    public virtual ICollection<CoLine> CoLines { get; set; }
}

我还建议将导航属性类型更改为ICollection<T>。有关详细信息,请查看此link

答案 1 :(得分:0)

它的价值,

#contain

是如何从CustOrder对象将nav属性设置为CoLine对象的。像提到的octavioccl一样,你需要添加FK表示法,但是你想要在我认为的CoLine类上,在ORDER_NBR属性上。