7.0.6.0 Lazy Load Issue
7.0.6.0 Lazy Load Issue
Getting an error where it says my table doesn't exist if I try to lazy load it. If I put a .Include() in for it on the linq query, it finds my table just fine. It looks like this version is not correctly lazy loading tables.
Re: 7.0.6.0 Lazy Load Issue
After looking into it some more it seems to happen in 6.80 as well. The SQL being generated from the lazy load is not including the schema name in front of the table. This causes a problem when your account is not the same as the schema name.
Re: 7.0.6.0 Lazy Load Issue
Please open your model in Entity Developer and make sure that the Schema property of your StorageEntity in the store part (SSDL) of the model is set to the corresponding schema name.
You can trace the generated SQL with dbMonitor.
Download link: http://www.devart.com/dbmonitor/dbmon3.exe
Documentation: http://www.devart.com/dotconnect/oracle ... nitor.html
If this doesn't help, please send us a small test project to reproduce the issue in our environment. We cannot reproduce the problem at the moment.
You can trace the generated SQL with dbMonitor.
Download link: http://www.devart.com/dbmonitor/dbmon3.exe
Documentation: http://www.devart.com/dotconnect/oracle ... nitor.html
If this doesn't help, please send us a small test project to reproduce the issue in our environment. We cannot reproduce the problem at the moment.
Re: 7.0.6.0 Lazy Load Issue
I can re-produce this consistently. Just use a connection string that is not the same user as the schema. The SQL generated for included tables will have the correct schema prefix, those generated for lazy loaded navigation properties will not. Even if its the same account as the schema owner you can see from the SQL there is a problem. To get around it I have had to call ChangeDatabase("MY_SCHEMA"); from the OnContextCreated, but this really does need fixed. I did not have to do this in 6.70
Code: Select all
OracleMonitor mon = new OracleMonitor();
mon.IsActive = true;
var x = myContext.SomeTable
.Include("OtherTable").Where(c => c.Id = 1).FirstOrDefault();
//Works correctly. Generates 1 SQL Statement to select from SCHEMA.SOME_TABLE and joins SCHEMA.OTHER_TABLE
x.OtherTable.TableValue = 1;
var y = myContext.SomeTable.Where(c => c.Id = 1).FirstOrDefault();
//Generates 1 SQL Statement for SCHEMA.SOME_TABLE
//Fails, can't find table. Generates 1 SQL Statements to select from OTHER_TABLE
y.OtherTable.TableValue = 1;
]
Re: 7.0.6.0 Lazy Load Issue
We can reproduce the mentioned behaviour with dotConnect for Oracle v 7.0.6 in the only case when the Schema property of the StorageEntity (for OtherTable) in the store part (SSDL) of the model is not set to the corresponding schema name. If Schema is set but code doesn't work, please send us a small complete test project with the DDL/DML script which creates the corresponding schemas for reproducing.