2012-07-13 70 views
5

EF5の使用中にこのエラーメッセージが表示されました。誰かがこれに対する答えを持っているのだろうかと思います。EF 5 - 渡された主キー値の数が、エンティティに定義された主キー値の数と一致する必要があります

using System; 
using System.Collections.Generic; 
using System.ComponentModel.DataAnnotations.Schema; 
using System.Linq; 
using System.Text; 
using System.Threading.Tasks; 

namespace Budget.Data 
{ 

    [Table("BudgetItems")] 
    public class BudgetItemRepository 
    { 
     [Column("MdaCode")] 
     public int MDACode { get; set; } 
     [Column("PersonalCost")] 
     public double PersonnelCost { get; set; } 
     [Column("OverheadCost")] 
     public double OverheadCost { get; set; } 
     [Column("RecurrentCost")] 
     public int RecurrentCost { get; set; } 
     [Column("CapitalCost")] 
     public double Capital { get; set; } 

     public double Allocation { get; set; } 
     [Column("BudgetYear")] 
     public String BudgetYear { get; set; } 
     [Column("RecordCreatedDate")] 
     public DateTime DateCreated { get; set; } 
     [Column("RecordLastModifiedDate")] 
     public DateTime LastModifiedDate { get; set; } 

     public virtual IList<BudgetItemRepository> budgetitems { get; set; } 

     public virtual IList<BudgetLineItemRepository> budgetlineitems { get; set; } 
     [Column("BudgetItemID")] 
     public int Id { get; set; } 
    } 
} 
+1

そして、そのエラーメッセージはどこで取得されましたか?このエラーを取得するには、何らかのメソッドを呼び出す必要がありました。 –

答えて

3

エンティティの主キーを宣言しませんでした。これは、主キー列に[Key]属性を付けてマークします。これがIdプロパティであると仮定すると、コードは次のようになります。

[Column("BudgetItemID")] 
[Key] 
public int Id { get; set; } 
+0

Code FirstのScott Guの例を含む多くのオンラインの例では、KeyAttributeは使用されていません。なぜ私の場合にこの属性を使用しなければならなかったのですか? – Kobojunkie

+0

http://weblogs.asp.net/scottgu/archive/2010/07/16/code-first-development-with-entity-framework-4.aspx – Kobojunkie

+1

それが動作するかどうかは、DataContextの設定方法によって異なります私はその大会を忘れてしまった、残念)。もう1つの可能性は、実際のテーブルに単一Id列と一致しない複合主キーがあることです。 –

関連する問題