2016-04-01 16 views
1

私はEntity Frameworkを初めて使用しています。私は、LawsonデータベースのCUSTORDERテーブルとCOLINEテーブルのPOCOを生成するために、Code-First-From-Databaseアプローチを使用しました。これらの2つのPOCOは以下のようになります。注:読みやすくするために、ほとんどのフィールドを削除しました。EF 6.1データベースからコードを最初に読み込む - 参加方法

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

    . . . 
} 

私はCustOrderを取得するためにDBContextを使用し、私はそれがまたCustOrderに関連付けられているすべてのコリンが含まれるようにしたいと思います。私はCustOrderクラスに以下を追加する必要があると思う。

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

しかし、どのように私はコリン列にORDER_NUMBERに参加するCustOrderでORDER_NBR列を使用して、これら2つのテーブルを結合するためにEFを伝えることができますか?

+0

申し訳ありませんが、私はまだよく分かりません。元の質問を少し編集しました。私がしたのは、CoLineのORDER_NUM coulmnをORDER_NUMBERに変更することでした。ですから、私はORDER_NUMをCustOrderに、ORDER_NUMBERをCoLineの中に入れたいと思っています。 EFがCoLineのORDER_NUMBERを使ってCustOrderのORDER_NUMに参加することを知る方法で、FKに注釈を付けるにはどうすればよいですか? –

答えて

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にチェックしてください。何その価値については

+0

したがって、FK注釈は、それがCoLineテーブルの外部キーであることをEFに通知します。しかし、CustOrderのORDER_NBRがCoLineのORDER_NBRに対応していることをEFはどのように知っていますか?列名が同じであるからですか?もしそうなら、名前が違っていたらどうなりますか? –

+0

この場合、 'Column'属性の' Name'プロパティを使用して、テーブル内のその列の実際の名前を設定します: 'Column(Order = 1、Name =" ColumnName ")' – octavioccl

+0

申し訳ありません、 。元の質問を少し編集しました。私がしたのは、CoLineのORDER_NUM coulmnをORDER_NUMBERに変更することでした。ですから、私はORDER_NUMをCustOrderに、ORDER_NUMBERをCoLineの中に入れたいと思っています。 EFがCoLineのORDER_NUMBERを使ってCustOrderのORDER_NUMに参加することを知る方法で、FKに注釈を付けるにはどうすればよいですか? –

0

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

はCustOrderオブジェクトからコリンオブジェクトにどのようにセットアップのナビゲーションプロパティをです。前述のoctaviocclのように、FK表記法を追加する必要がありますが、これはORDER_NBRプロパティのCoLineクラスで必要になります。