C# EF 6.1首先从数据库中获取代码-如何加入
我不熟悉实体框架。我使用了“数据库中的代码优先”方法为lawson数据库中的CUSTORDER和COLINE表生成POCO。这两个POCO如下所示:注意:为了便于阅读,我删除了大部分字段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
[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进行注释?