2012-07-13 9 views
5

. Podczas korzystania z EF5 pojawił się ten komunikat o błędzie. Zastanawiasz się, czy ktoś ma na to odpowiedź.EF 5 - Liczba przekazanych wartości klucza podstawowego musi być zgodna z liczbą wartości kluczy podstawowych zdefiniowanych w obiekcie

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

I gdzie otrzymałeś ten komunikat o błędzie? Trzeba było wywołać pewną metodę, aby uzyskać ten błąd. –

Odpowiedz

3

Nie zadeklarowałeś klucza podstawowego dla encji. Robisz to zaznaczając kolumnę klucza głównego za pomocą atrybutu [Key}. Zakładając, że jest to właściwość Id, kod powinien wyglądać następująco:

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

W wielu przykładach w Internecie, w tym w przykładzie Scotta Gu na Code First, KeyAttribute nie jest używany. Dlaczego w moim przypadku muszę użyć tego atrybutu? – Kobojunkie

+0

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

+1

To, czy działa, zależy od tego, jak skonfigurować DataContext (i zapomniałem o tej konwencji, przepraszam). Inną możliwością jest to, że rzeczywista tabela ma złożony klucz podstawowy, który nie pasuje do pojedynczej kolumny Id. –