如何使用外键访问其他表的列?
本文关键字:其他 访问 何使用 | 更新日期: 2023-09-27 18:01:20
我有两个表ProductionLine
和Machine
。在Machine
表中,我有一个ProductionLine
的外键命名为productionLine
。
我想从Machine
表访问ProductionLine
中的KeyId
列。my Machine Class:
[Column("FldKeyId")]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
[Required]
[Key]
public int MyKeyId { get; set; }
[Column("FldCode")]
[Required]
[Index(IsUnique = true)]
public int MyMachineCode
{
get { return _MachineCode; }
set { _MachineCode = value; }
}
[Column("FldName")]
[Required]
public string MyName
{
get { return _Name; }
set { _Name = value; }
}
[Column("FldDescription")]
[Required]
public string MyDescription
{
get { return _Desc; }
set { _Desc = value; }
}
[Column("FldModifiedUserId")]
[Required]
public int ModifiedUserId { get; set; }
[Column("FldModificationDate")]
[Required]
public DateTime ModificationDate { get; set; }
[Column("FldDeleteFlag")]
[Required]
public int DeleteFlag { get; set; }
[Required]
public ProductionLine ProductionLine { get; set; }
就是DbContext类:
public DbSet<Machine> Machines { get; set; }
我有这段代码,但是它抛出了一个错误:
Machine _SelectedMachine;
_SelectedMachine = (cmbMachines.SelectedItem as Machine);
int Mid = _SelectedMachine.ProductionLine.MyKeyId;
dgvcolCompany.DataSource = ProductionLine.GetMachineLine(Mid);
和方法getMachineLine
:
public static List<ProductionLine> GetMachineLine(int KeyId)
{
return new ContexManager().ProductionLines.Where(c => c.MyKeyId == KeyId && c.DeleteFlag == 0).ToList();
}
当运行这段代码时,在
行int Mid=...
我得到这个错误
对象引用未设置为对象的实例。
我该怎么做?
我的表是由EF代码优先生成的-问题是如何访问ProductionLine的KeyId从机器的ProductionLine
声明属性ProductionLine
为virtual。还要在其上添加外键属性。
[ForeignKey]
public virtual ProductionLine ProductionLine;
p。如果有帮助,请标记为答案
必须在ProductionLine
之上有一个[ForeignKey("ForeignKeyName")]
属性让它成为虚拟的,让Lazy Loading
成为可能。或者,如果你不想延迟加载,在获取机器时使用Include("ProductionLine")
。
OffTopic:你的名字不好。实体框架使用"基于约定的"的方法。因此,一个名为Machine
的类的主键应该称为Id
,而不是MyKeyId