我有一个通用的存储库,我有一个将数据保存到数据库的方法。知道我正在改变一个旧的系统,我遇到了这种情况:使用实体框架在数据库内插入数据
例如,当我必须保存区域时,需要根据数据库插入的最后一个值插入字段的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
是否确定该列接受空值并且不是“非空”列? –