2016-08-09 9 views
2

にアクセスするにはProductionLineMachineの2つのテーブルがあります。 Machineテーブルでは、という名前のProductionLineへの外部キーがあります。他のテーブルの列に外部キー

MachineテーブルからKeyIdProductionLineにアクセスしたいと思います。 私のマシンクラス:

[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(); 
} 

は私が

Object reference not set to an instance of an object.

は、私は何をしなければならないの、このエラーが出るライン

int Mid=... 

に、このコードを実行している場合は?

私のテーブルは、EFコード・ファーストによって生成され -ProblemあなたはProductionLine 上記[ForeignKey("ForeignKeyName")]属性を持っており、それが仮想Lazy Loading可能にするためにしなければならないマシンのproductionLine

+0

を助けた場合P.S答えとしてそれをマークしてください、あなたはマシンのエンティティタイプの設定やクラス定義を示していただけますか? –

+0

@RichaGarg My Code Is Updated – sadeq

+0

あなたは 'ProductionLine'プロパティに対して' [ForeignKey] '属性について言及していません。外部キーとしてどのように設定していますか? –

答えて

1

プロパティProductionLineを仮想として宣言します。また、外部キー属性を追加します。

[ForeignKey] 

public virtual ProductionLine ProductionLine;

それは

+0

のカンマ区切りのリストでなければなりませんか? – sadeq

+0

私はproductionLineしかしMigratonための設定ForeignKeyの属性が問題になることはできません....名前値としてプロパティを宣言 – sadeq

+0

外部キープロパティ名のカンマ区切りのリストでなければなりませんしたい:パブリック仮想ProductionLine ProductionLine。 –

0

からProductionLineの鍵IDにアクセスする方法です。または、遅延ロードを望まない場合は、マシンを取得するときにInclude("ProductionLine")を使用します。

オフトピック:あなたの名前は悪いです。 Entity Frameworkは「Convention」アプローチを使用します。したがって、Machineという名前のクラスの主キーは、決して呼び出されません。MyKeyId

+0

仮想化する方法は? – sadeq

+0

私はproductionLineのForeignKey属性を設定したいが、Migratonは問題を起こさないようにする....Nameの値は、外部キープロパティ名、仮想作り方 – sadeq

関連する問題