2012-07-13 10 views
5

Me encontré con este mensaje de error al usar EF5. Preguntándose si alguien tiene la respuesta para esto.EF 5 - El número de valores de clave primarios pasados ​​debe coincidir con el número de valores de clave primaria definidos en la entidad

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

¿Y de dónde sacaste ese mensaje de error? Debes llamar a algún método para obtener este error. –

Respuesta

3

No ha declarado una clave principal para la entidad. Para ello, marque la columna de la clave principal con el atributo [Key]. Suponiendo que esta es la propiedad Id, el código sería el siguiente:

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

En muchos de los ejemplos en línea, incluido el ejemplo de Scott Gu en Code First, no se utiliza KeyAttribute. ¿Por qué tengo que usar este atributo en mi caso? – Kobojunkie

+0

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

+1

Si eso funciona o no depende de cómo configure su DataContext (y me olvidé de esa convención, lo siento). La otra posibilidad es que la tabla actual tenga una clave primaria compuesta que no coincida con la única columna Id. –

Cuestiones relacionadas