C# EF 6.1首先从数据库中获取代码-如何加入

C# EF 6.1首先从数据库中获取代码-如何加入,c#,entity-framework,C#,Entity Framework,我不熟悉实体框架。我使用了“数据库中的代码优先”方法为lawson数据库中的CUSTORDER和COLINE表生成POCO。这两个POCO如下所示:注意:为了便于阅读,我删除了大部分字段 [Table("LAWSON.CUSTORDER")] public partial class CustOrder { [Key] [Column(Order = 0)] [DatabaseGenerated(DatabaseGeneratedOption.None)] pub

我不熟悉实体框架。我使用了“数据库中的代码优先”方法为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; }
public虚拟IList CoLines{get;set;}
但是我如何告诉EF使用CUST中的ORDER\u NBR列连接这两个表以连接CoLine列中的ORDER\u NUMBER?

您需要使用FK属性上的属性:

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; }
}
公共类客户订单
{
[关键]
[第列(顺序=1)]
[外键(“科林”)]
[数据库生成(DatabaseGeneratedOption.None)]
公共整数顺序{get;set;}
公共虚拟ICollection coline{get;set;}
}
我还建议将导航属性类型更改为
ICollection
。查看此项了解更多详细信息。

了解其价值

公共虚拟IList CoLines{get;set;}


是如何从CustOrder对象设置CoLine对象的nav属性。正如octavioccl所提到的,您需要添加FK符号,但是我相信您希望在CoLine类的ORDER_NBR属性上添加FK符号。

因此,FK注释告诉EF它是CoLine表的外键。但是EF如何知道CustOrder中的ORDER_NBR与CoLine中的ORDER_NBR相对应?是因为列名相同吗?如果是这样,如果它们的名称恰好不同,会发生什么情况?在这种情况下,请使用
Column
属性的
Name
属性设置表中该列的真实名称:
Column(Order=1,Name=“ColumnName”)
对不起,我还是不太清楚。我对我原来的问题做了一些修改。我所做的是将CoLine中的ORDER_NUM coulmn更改为ORDER_NUMBER。现在我有一个CustOrder中的ORDER_NUM和一个CoLine中的ORDER_NUM,我想加入。我如何注释FK,使EF知道如何将CustOrder中的ORDER_NUM与CoLine中的ORDER_NUM连接起来?对不起,我还是不太清楚。我对我原来的问题做了一些修改。我所做的是将CoLine中的ORDER_NUM coulmn更改为ORDER_NUMBER。现在我有一个CustOrder中的ORDER_NUM和一个CoLine中的ORDER_NUM,我想加入。我如何才能以EF知道如何将CustOrder中的ORDER_NUM与CoLine中的ORDER_NUM连接的方式对FK进行注释?