保存更改后返回实体键不起作用

本文关键字:不起作用 实体 返回 保存更改 | 更新日期: 2023-09-27 18:09:27

我有这段代码

            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。

' T

保存更改后返回实体键不起作用

我能找到的最接近的答案是:

因为Oracle使用序列+触发器使"自动识别"值,似乎当实体框架在保存它时添加对象时,返回的值仍然是0,因为触发器/序列还没有更新它。

所以解决这个问题的唯一方法是在保存后再次获取对象

' T

对我来说,修复是手动(是的,手动!)进入edmx,在SSDL部分添加StoreGeneratedPattern="Identity"属性,在CSDL部分添加annonation:StoreGeneratedPattern="Identity"

SQL端没有坏,但是Oracle端肯定坏了