2013-10-11 6 views
5

я не смог вставить запись в таблицуEntity Framework добавить новый объект

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

Идентификационный столбец сопоставил 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(); 

Attach для существующих объектов (когда они отрываются, или если вы хотите, чтобы присоединить его к другому объекту).

AddObject предназначен для новых объектов.

+0

Привет, я использую EF 5, поэтому эквивалент для AddObjects - _dbContext.Set () .Add (newEntity); но это все еще не сработало – Vijay

Смежные вопросы