2016-07-12 4 views
0

外部キーと2つの主キーを持つEFクラスのセットでFind()を使用しようとしていますが、エラーが発生します。EF複数のキーを持つFind()

これが私のクラスである:ID、D0とD1の特定の値について

public class dbDDV 
    { 
     [ForeignKey("dbf")] 
     [Column(Order = 0)] 
     public int id { get; set; } 

     [Key] 
     [Column(Order = 1)] 
     public DateTime D0 { get; set; } 

     [Key] 
     [Column(Order = 2)] 
     public DateTime D1 { get; set; } 

     public double V{ get; set; } 
    } 

I)が(検索を使用しようとしている:

dbContext.mySetOfdbDDV.Find(myId,myD0,myD1) 

以下は、私が受け取るエラーです:

System.ArgumentException:渡された主キー値の数が、エンティティで定義された主キー値の数と一致する必要があります。

この場合のFind()の正しいアプローチは何でしょうか?

+0

というIDも必要です。私はidカラムに[Key]を追加して、Findをもともとのように使うことができるプライマリと外部キーの両方になるようにしました。 – donquijote

答えて

4

D0D1は複合プライマリキーの一部です(idではありませんが、私はあなたのデザインを判断するのに奇妙です)。したがって、これらの2つの列の値を渡すときは、Find

dbContext.mySetOfdbDDV.Find(myD0,myD1) 
+1

これはうまくいきました。私の実装では、主キーと外部キーの両方になるように[Key]をid列に追加する設計を変更しました。 – donquijote

関連する問題