我有一個通用的存儲庫,我有一個將數據保存到數據庫的方法。知道我正在改變一箇舊的系統,我遇到了這種情況:使用實體框架在數據庫內插入數據
例如,當我必須保存區域時,需要根據數據庫插入的最後一個值插入字段的ID ,但由於某種原因,當我試圖堅持這一點,出現一個錯誤,告訴我不能將空值插入到表的id中。
我試着這樣做:
areaRepository.Save(new Area{AreaCode = 999, AreaName = "teste"});
areaRepository.SaveAll();
的保存方法是:
public void Save(T obj)
{
ctx.Set<T>().Add(obj);
}
而且保存所有方法
public void SaveAll()
{
ctx.SaveChanges();
}
執行白水回收方法的錯誤上升後。
{ 「ORA-01400:無法插入(\空」 CELG \ EPW_AREAS \ AREA_CODE \」 \ 「」 \ 「」)\諾拉-06512:在line 4" }
知道我試圖強制AREA_CODE值,爲什麼實體框架不會添加它並將該值視爲null?
有沒有辦法強制它?
有沒有人可以幫忙?
感謝您的建議。
更新:
實體類:
[Table("EPW_AREAS", Schema="CELG")]
public class Area
{
[Key]
[Column("AREA_CODE")]
public int AreCode { get; set; }
[Column("AREA_NAME")]
public string AreName { get; set; }
}
更新2
語境
public WsContext(string sConnectionString)
: base(sConnectionString)
{
}
public DbSet<Area> Areas { get; set; }
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();
}
更新3
CREATE TABLE CELG.EPW_AREAS
(
AREA_CODE NUMBER NOT NULL,
AREA_NAME VARCHAR2(30 BYTE)
)
TABLESPACE TBS_CELG_DATA
PCTUSED 0
PCTFREE 10
INITRANS 1
MAXTRANS 255
STORAGE (
INITIAL 64K
NEXT 1M
MINEXTENTS 1
MAXEXTENTS UNLIMITED
PCTINCREASE 0
BUFFER_POOL DEFAULT
)
LOGGING
NOCOMPRESS
NOCACHE
NOPARALLEL
MONITORING;
最可能的問題是您的映射是錯誤的。如果你需要進一步的幫助,你將不得不提供映射代碼。 – Igor
你可以發佈你的上下文類嗎? – Isma
是否確定該列接受空值並且不是「非空」列? –