2013-10-11 23 views
5

io in grado di inserire un record nella tabellaEntity Framework aggiungere nuova entità

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); 

    } 
} 

sto errore ottenendo quando provo ad aggiungere nuova entità

Un valore nullo negozio-generato è stato restituito per membro non annullabile 'Id' di tipo '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

Questo potrebbe non essere la risposta, ma si può provare a cambiare 'Id' a' int? Id' e riprovare l'operazione. – Nilesh

+0

La colonna ID è denominata KPI_ID nel database? Inoltre: sei sicuro che la tua mappatura sia stata caricata correttamente? – Kristof

+0

ID colonna mappata KPI_ID nella tabella del database. la mappatura è stata caricata correttamente. Sono in grado di recuperare e aggiornare il record, solo il problema è l'inserimento di un nuovo record. @ Nilesh si ho provato a fare int? per ID ma non ha funzionato – Vijay

risposta

10

questo ha risolto il mio problema

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

oppure si può semplicemente rimuovere questa riga

[DatabaseGenerated(DatabaseGeneratedOption.Computed)] 
0

Questo dovrebbe funzionare:

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(); 

Attaccare è per entità esistenti (quando sono staccati, o quando si desidera collegarlo a un'altra entità).

AddObject è per le nuove entità.

+0

Ciao, sto usando EF 5 quindi l'equivalente per AddObjects è _dbContext.Set () .Add (newEntity); ma questo ancora non ha funzionato – Vijay

Problemi correlati