Page 1 of 1

7.0.6.0 Lazy Load Issue

Posted: Wed 23 May 2012 21:02
by wf_paul
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

Posted: Thu 24 May 2012 12:39
by wf_paul
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

Posted: Thu 24 May 2012 16:41
by Shalex
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.

Re: 7.0.6.0 Lazy Load Issue

Posted: Thu 24 May 2012 18:01
by wf_paul
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

Posted: Mon 28 May 2012 12:36
by Shalex
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.