我有这段代码
IMG_UPLOAD_FILES tObjUploadedFile = new IMG_UPLOAD_FILES();
tObjUploadedFile.UPLOAD_FILE_NAME = "testname.png";
tObjUploadedFile.SETTINGS_FOLDER_ID = 2;
dbHandler.IMG_UPLOAD_FILES.AddObject(tObjUploadedFile);
dbHandler.SaveChanges(SaveOptions.AcceptAllChangesAfterSave);
decimal tmpID= tObjUploadedFile.UPLOAD_FILE_ID;
tmpID仍为0且永远不会返回密钥。
我已在所需字段上将StoreGeneratedPattern设置为Identity。
我正在使用最新的ODB.NET来对抗ORACLE数据库。
\ t
答案 0 :(得分:0)
我最接近找到答案的是:
因为Oracle使用序列+触发器来制作"自动识别"值,似乎当实体框架在保存它时添加对象时,值返回仍为0,因为触发器/序列尚未更新它。
因此,解决此问题的唯一方法是在保存后再次获取对象。
\ t
答案 1 :(得分:0)
对我来说,修复是手动(是的,手动!)进入edmx,在SSDL部分添加StoreGeneratedPattern="Identity"
属性,在CSDL部分添加annonation:StoreGeneratedPattern="Identity"
。
它在SQL方面没有被打破,但是它在Oracle方面确实被打破了。