2013-10-11 280 views
5

我無法在表中插入一條記錄實體框架添加新的實體

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

    } 
} 

我得到錯誤,當我嘗試添加新的實體

一個空店產生的價值是爲返回非可空構件 類型的 'ID'「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

這可能不是答案,但你可以嘗試改變'Id'到'詮釋? Id'並再次嘗試操作。 – Nilesh

+0

數據庫中的ID列是否名爲KPI_ID?另外:你確定你的地圖加載正確嗎? – Kristof

+0

ID列映射數據庫表中的KPI_ID。映射加載正確。我能夠檢索和更新記錄,只有問題是插入新記錄。 @Nilesh是的,我試圖讓int?爲Id,但沒有工作 – Vijay

回答

10

這解決了我的問題

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

或者你可以刪除此行

[DatabaseGenerated(DatabaseGeneratedOption.Computed)] 
0

這應該工作:

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

連接是現有的實體(當它們被分離,或當你想將它連接到另一個實體)。

AddObject用於新實體。

+0

嗨,我正在使用EF 5所以相當於AddObjects是_dbContext.Set ().Add(newEntity);但是這仍然不起作用 – Vijay