I just tried to upgrade to version 2.50 and must say it has been extremely painful. I believe I will rollback to an older version as currently nothing of my code works.
- Importing back a template I wrote was mission impossible, I had to redo the modifications.
- Stored procedures in oracle returns a different type of data, and yet doesn't work anymore correctly either as LINQ produces a nice "Devart.Data.Oracle.OracleException: ORA-22905: cannot access rows from a non-nested table item"
- Some LINQ queries don't work anymore neither as it complains about a null object somewhere in the LINQ statement.
All of those where all fine with 2.20... hope you will fix them.
Version 2.50 introduces a lot of breaking changes / bug
-
- Posts: 3
- Joined: Fri 28 Jan 2011 13:29
-
- Devart Team
- Posts: 1710
- Joined: Thu 03 Dec 2009 10:48
Could you please describe the problems you've encountered with templates and stored procedures in more details? For example, please specify the following:
- the signature of the procedure with which the problem occurred;
- the signature of the corresponding method in the model;
- the scenario in which the error occurred.
If possible, please send us the script needed to create this procedure, and the model with which the problem can be reproduced.
As for the null object reference exception, we have already fixed this error. The fix will be available in the nearest build, which we plan to release next week.
- the signature of the procedure with which the problem occurred;
- the signature of the corresponding method in the model;
- the scenario in which the error occurred.
If possible, please send us the script needed to create this procedure, and the model with which the problem can be reproduced.
As for the null object reference exception, we have already fixed this error. The fix will be available in the nearest build, which we plan to release next week.
-
- Posts: 3
- Joined: Fri 28 Jan 2011 13:29
The stored function is:
The OBJ_TO column is a string.
Previsouly the LinqConnect function was:
ISingleResult GetCompleteTree(string top);
Now it is:
IQueriable GetCompleteTree(string top);
Anyhow it doesn't work as said due to the following result:
SQL Created:
Error:
For the template, it could have been incompatible versions of the template? No clues, simply the effect was that there was no generation of CS code until I recreated a new template.
Code: Select all
CREATE OR REPLACE FUNCTION GET_COMPLETE_TREE(top in varchar2) RETURN SYS_REFCURSOR
AS
l_data SYS_REFCURSOR;
BEGIN
open l_data for SELECT DISTINCT OBJ_TO
FROM INVENT_CONNECTIONS
START WITH OBJ_FROM = top CONNECT BY PRIOR OBJ_TO = OBJ_FROM UNION SELECT top FROM DUAL;
RETURN l_data;
END;
Previsouly the LinqConnect function was:
ISingleResult GetCompleteTree(string top);
Now it is:
IQueriable GetCompleteTree(string top);
Anyhow it doesn't work as said due to the following result:
SQL Created:
Code: Select all
SELECT t1.OBJ_TO
FROM TABLE(IV.GET_ALL_CHILDREN(:p0)) t1
Code: Select all
[OracleException (0x80004005): ORA-22905: cannot access rows from a non-nested table item]
Devart.Data.Oracle.am.b(Int32 A_0) +291
Devart.Data.Oracle.ao.d(Int32 A_0) +47
Devart.Data.Oracle.ao.a(Int32 A_0, f A_1) +1094
Devart.Data.Oracle.OracleCommand.InternalExecute(CommandBehavior behavior, IDisposable disposable, Int32 startRecord, Int32 maxRecords, Boolean nonQuery) +4303
Devart.Common.DbCommandBase.ExecuteDbDataReader(CommandBehavior behavior, Boolean nonQuery) +760
Devart.Common.DbCommandBase.ExecuteDbDataReader(CommandBehavior behavior) +38
System.Data.Common.DbCommand.System.Data.IDbCommand.ExecuteReader() +12
Devart.Data.Linq.Provider.DataProvider.ExecuteQuery(CompiledQuery compiledQuery, Object[] parentArgs, Object[] userArgs, Object lastResult) +1530
[LinqCommandExecutionException: Error on executing DbCommand.]
Devart.Data.Linq.LinqCommandExecutionException.CanThrowLinqCommandExecutionException(String message, Exception e) +79
Devart.Data.Linq.Provider.DataProvider.ExecuteQuery(CompiledQuery compiledQuery, Object[] parentArgs, Object[] userArgs, Object lastResult) +6196
Devart.Data.Linq.Provider.DataProvider.ExecuteAllQueries(CompiledQuery compiledQuery, Object[] userArguments) +65
Devart.Data.Linq.Provider.CompiledQuery.Devart.Data.Linq.Provider.ICompiledQuery.Execute(IProvider provider, Object[] userArgs) +212
Devart.Data.Linq.DataQuery`1.i() +105
IvContext.IvDataContext.RetreiveChilds(String top) in C:\Documents and Settings\bertrand\Desktop\SharpInventory\SharpInventory\code\IvContext.cs:31
-
- Devart Team
- Posts: 1710
- Joined: Thu 03 Dec 2009 10:48
We couldn't reproduce the problem with the stored function. I will send you a test project in a letter, please check that it is not blocked by your mail filter. Please specify what should be changed in the sample to reproduce the problem.
As for the templates, we have revised the way they are stored and used in the new version. For more information about these changes, please refer to
http://www.devart.com/forums/viewtopic.php?t=21037
Unfortunately, old templates became incompatible with the new version of Entity Developer. However, it should be possible to merge custom templates with the templates from the new version. Please tell us if you encounter any problems with this.
As for the templates, we have revised the way they are stored and used in the new version. For more information about these changes, please refer to
http://www.devart.com/forums/viewtopic.php?t=21037
Unfortunately, old templates became incompatible with the new version of Entity Developer. However, it should be possible to merge custom templates with the templates from the new version. Please tell us if you encounter any problems with this.
Well, I had same problem regarding:
ORA-22905: cannot access rows from a non-nested table item
After upgrade everything worked until code was regenerated with new template, then I got error.
Solution is that you should change property of function to Pipelined:false (in designer). Then it is regenerated on old way. I think that such procedures cannot be queryable and hence this error, because dotconnect wants to perform operations...
Or if there were option to set default Pipelined to false it would solved everything. It is problem to click all functions and change property.
ORA-22905: cannot access rows from a non-nested table item
After upgrade everything worked until code was regenerated with new template, then I got error.
Solution is that you should change property of function to Pipelined:false (in designer). Then it is regenerated on old way. I think that such procedures cannot be queryable and hence this error, because dotconnect wants to perform operations...
Or if there were option to set default Pipelined to false it would solved everything. It is problem to click all functions and change property.
-
- Devart Team
- Posts: 1710
- Joined: Thu 03 Dec 2009 10:48
Some changes were made in the way Entity Developer builds a model from an .lqml file in the new version. Because of these changes, functions may be mistakenly marked as pipelined when opening old models in the new version of Entity Developer; in this case, such functions would be invoked in an improper way.
To resolve this problem, you may perform one of the following:
- change the Pipelined property of such functions to false in Entity Developer;
- remove the 'IsComposable="True"' entries (or replace them by 'IsComposable="False"') from the .lqml file;
- remove the problem functions from the model and add them again.
To resolve this problem, you may perform one of the following:
- change the Pipelined property of such functions to false in Entity Developer;
- remove the 'IsComposable="True"' entries (or replace them by 'IsComposable="False"') from the .lqml file;
- remove the problem functions from the model and add them again.