2013-10-11 16 views
5

nie mogę wstawić rekord w tabeliEntity Framework dodać nowy podmiot

public class KPITable 
{ 

    [Key]   
    public int Id { get; set; } 
    public string Name { get; set; } 
    public string Query { get; set; } 
    public string TableName { get; set; } 
} 

public class KPITableMap : EntityTypeConfiguration<KPITable> 
{ 
    public KPITableMap() 
    { 
     ToTable("EIS_KPI", AppUtility.EISMDBSchemaName); 
     Property(t => t.Id).HasColumnName("KPI_ID");   
     Property(t => t.Name).HasColumnName("NAME").HasMaxLength(20); 
     Property(t => t.Query).HasColumnName("QUERY").HasMaxLength(20); 
     Property(t => t.TableName).HasColumnName("TABLE_NAME").HasMaxLength(20); 

    } 
} 

Dostaję błąd, gdy próbuję dodać nowy podmiot

null sklep generowane wartość została zwrócona na non-pustych element 'id' typu „EISM.Database.Models.KPITable

var newEntity = new KPITable(); 
newEntity.Id = 55; 
       newEntity.Name = data.Name; 
       newEntity.Query = data.Query; 
       newEntity.TableName = data.TableName; 
_dbContext.KPIs.Attach(newEntity); 
       _dbContext.Entry(newEntity).State = EntityState.Added; 
       _dbContext.SaveChanges(); 
+0

To może nie być odpowiedź, ale można spróbować zmienić '' Id' do int? Id' i spróbuj ponownie. – Nilesh

+0

Czy kolumna ID o nazwie KPI_ID znajduje się w bazie danych? Ponadto: czy jesteś pewien, że twoje mapowanie jest poprawnie załadowane? – Kristof

+0

Kolumna ID odwzorowała KPI_ID w tabeli bazy danych. mapowanie jest poprawnie załadowane. Jestem w stanie odzyskać i zaktualizować rekord, jedynym problemem jest wstawienie nowego rekordu. @Nilesh tak próbowałem robić int? dla Id, ale nie działa – Vijay

Odpowiedz

10

ten został rozwiązany mój problem

[Key]  
[DatabaseGenerated(DatabaseGeneratedOption.None)] 
public int Id { get; set; } 

lub można po prostu usunąć ten wiersz

[DatabaseGenerated(DatabaseGeneratedOption.Computed)] 
0

To powinno działać:

var newEntity = new KPITable(); 
newEntity.Id = 55; 
       newEntity.Name = data.Name; 
       newEntity.Query = data.Query; 
       newEntity.TableName = data.TableName; 
_dbContext.KPIs.AddObject(newEntity); 
_dbContext.SaveChanges(); 

Attach to dla istniejących jednostek (gdy są odłączane, lub gdy chcesz dołączyć go do innego podmiotu).

AddObject jest dla nowych podmiotów.

+0

Witam, używam EF 5, więc odpowiednik dla AddObjects jest _dbContext.Set (). Dodaj (newEntity); ale to wciąż nie zadziałało – Vijay