savechanges不起作用后返回实体键

时间:2011-09-22 09:31:07

标签: c# .net oracle entity-framework

我有这段代码

            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

2 个答案:

答案 0 :(得分:0)

我最接近找到答案的是:

因为Oracle使用序列+触发器来制作"自动识别"值,似乎当实体框架在保存它时添加对象时,值返回仍为0,因为触发器/序列尚未更新它。

因此,解决此问题的唯一方法是在保存后再次获取对象。

\ t

答案 1 :(得分:0)

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

它在SQL方面没有被打破,但是它在Oracle方面确实被打破了。