2013-10-11 14 views
5

ich nicht in der Lage, einen Datensatz in Tabelle FehlerRahmen Entity hinzufügen neue Einheit

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

    } 
} 

Ich erhalte einzufügen, wenn ich versuche,

Ein Null-store-generierten Wert neue Einheit zurückgegeben wurde hinzugefügt für ein nicht-NULL festlegbare Element 'Id' des Typs ‚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

Dies ist nicht die Antwort sein könnte, aber man kann auf 'int Ändern' Id' versuchen? Id "und probiere die Operation erneut aus. – Nilesh

+0

Ist die ID-Spalte KPI_ID in der Datenbank? Außerdem: Sind Sie sicher, dass Ihr Mapping korrekt geladen wurde? – Kristof

+0

ID-Spalte gemappte KPI_ID in der Datenbanktabelle. Das Mapping wird korrekt geladen. Ich kann den Datensatz abrufen und aktualisieren, nur das Problem ist das Einfügen eines neuen Datensatzes. @Nilesh ja, ich habe versucht Int zu machen? für ID aber nicht funktioniert – Vijay

Antwort

10

hat dies mein Problem

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

aufgelöst oder Sie können diese Zeile einfach entfernen

[DatabaseGenerated(DatabaseGeneratedOption.Computed)] 
0

Diese Arbeit sollte:

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

für bestehende Einheiten Attach (wenn sie abgelöst werden, oder, wenn Sie es an eine andere Entität anhängen möchten).

AddObject ist für neue Entitäten.

+0

Hallo, ich benutze EF 5 so das Äquivalent für AddObjects ist _dbContext.Set () .Add (newEntity); aber das hat immer noch nicht funktioniert – Vijay