Page 1 of 1

InvalidOperationException

Posted: Thu 02 Jul 2009 12:58
by crazypit
Hello,

I use the following query:

(from objCase in dataContext.Cases
from objCaseType in dataContext.CaseTypes
where objCase.CuId == CustomerId
&& objCase.CtId == objCaseType.Id
select new Case {Description = objCaseType.Descr, Id = objCase.Id, Scope = objCaseType.Scope}).
ToList();

Case object is an Entity but with 2 more unbinded properties, Description and Scope where i need to project the relevant values from the joined CaseType Entity. When i run the query i get an InvalidOperationException with these details:

at Devart.Data.Oracle.Linq.Provider.a.a(String A_0, Boolean A_1)
at Devart.Data.Oracle.Linq.Provider.OracleDataSourceInfo.a.a(String A_0)
at Devart.Data.Linq.Provider.DataSourceInfo.TypeSystemProvider.GetProviderType(String typeName)
at Devart.Data.Linq.Provider.Query.SqlFactory.Default(MetaDataMember member)
at Devart.Data.Linq.Provider.Query.ao.a(f A_0, MetaType A_1, List`1& A_2, List`1& A_3, SqlExpression& A_4, IList`1 A_5)
at Devart.Data.Linq.Provider.Query.ao.b(f A_0, MetaType A_1, List`1& A_2, List`1& A_3, SqlExpression& A_4, IList`1 A_5)
at Devart.Data.Linq.Provider.Query.ao.a(f A_0, IList`1 A_1)
at Devart.Data.Linq.Provider.Query.ao.a(MetaType A_0, ITable A_1, IList`1 A_2)
at Devart.Data.Linq.Provider.Query.bk.a(ITable A_0)
at Devart.Data.Linq.Provider.Query.bk.a(ConstantExpression A_0)
at Devart.Data.Linq.Provider.Query.bk.j(Expression A_0)
at Devart.Data.Linq.Provider.Query.bk.a(Expression A_0, Expression A_1, Expression A_2)
at Devart.Data.Linq.Provider.Query.bk.b(MethodCallExpression A_0)
at Devart.Data.Linq.Provider.Query.bk.j(Expression A_0)
at Devart.Data.Linq.Provider.Query.bk.a(Expression A_0, LambdaExpression A_1)
at Devart.Data.Linq.Provider.Query.bk.b(MethodCallExpression A_0)
at Devart.Data.Linq.Provider.Query.bk.j(Expression A_0)
at Devart.Data.Linq.Provider.Query.bk.d(Expression A_0, Expression A_1)
at Devart.Data.Linq.Provider.Query.bk.b(MethodCallExpression A_0)
at Devart.Data.Linq.Provider.Query.bk.j(Expression A_0)
at Devart.Data.Linq.Provider.Query.bk.i(Expression A_0)
at Devart.Data.Linq.Provider.DataProvider.a(Expression A_0)
at Devart.Data.Linq.Provider.DataProvider.h(Expression A_0)
at Devart.Data.Linq.DataQuery`1.i()

Posted: Thu 02 Jul 2009 13:25
by crazypit
I projected to a new custom Entity CaseView which is not binded to the database and in this i need to project 5 properties from Case & CaseType entities.

I used the query:
cases = (from objCase in dataContext.Cases
from objCaseType in dataContext.CaseTypes
where objCase.CuId == CustomerId
&& objCase.CtId == objCaseType.Id
select
new CaseView
{
ParentId = objCase.ParId,
Status = objCase.Status,
Description = objCaseType.Descr,
Id = objCase.Id,
Scope = objCaseType.Scope
}).
ToList();

and i get a :
"Invalid datatype: "

at Devart.Data.Oracle.Linq.Provider.a.a(String A_0, Boolean A_1)
at Devart.Data.Oracle.Linq.Provider.OracleDataSourceInfo.a.a(String A_0)
at Devart.Data.Linq.Provider.DataSourceInfo.TypeSystemProvider.GetProviderType(String typeName)
at Devart.Data.Linq.Provider.Query.SqlFactory.Default(MetaDataMember member)
at Devart.Data.Linq.Provider.Query.ao.a(f A_0, MetaType A_1, List`1& A_2, List`1& A_3, SqlExpression& A_4, IList`1 A_5)
at Devart.Data.Linq.Provider.Query.ao.b(f A_0, MetaType A_1, List`1& A_2, List`1& A_3, SqlExpression& A_4, IList`1 A_5)
at Devart.Data.Linq.Provider.Query.ao.a(f A_0, IList`1 A_1)
at Devart.Data.Linq.Provider.Query.ao.a(MetaType A_0, ITable A_1, IList`1 A_2)
at Devart.Data.Linq.Provider.Query.bk.a(ITable A_0)
at Devart.Data.Linq.Provider.Query.bk.a(ConstantExpression A_0)
at Devart.Data.Linq.Provider.Query.bk.j(Expression A_0)
at Devart.Data.Linq.Provider.Query.bk.a(Expression A_0, Expression A_1, Expression A_2)
at Devart.Data.Linq.Provider.Query.bk.b(MethodCallExpression A_0)
at Devart.Data.Linq.Provider.Query.bk.j(Expression A_0)
at Devart.Data.Linq.Provider.Query.bk.a(Expression A_0, LambdaExpression A_1)
at Devart.Data.Linq.Provider.Query.bk.b(MethodCallExpression A_0)
at Devart.Data.Linq.Provider.Query.bk.j(Expression A_0)
at Devart.Data.Linq.Provider.Query.bk.d(Expression A_0, Expression A_1)
at Devart.Data.Linq.Provider.Query.bk.b(MethodCallExpression A_0)
at Devart.Data.Linq.Provider.Query.bk.j(Expression A_0)
at Devart.Data.Linq.Provider.Query.bk.i(Expression A_0)
at Devart.Data.Linq.Provider.DataProvider.a(Expression A_0)
at Devart.Data.Linq.Provider.DataProvider.h(Expression A_0)
at Devart.Data.Linq.DataQuery`1.i()

Posted: Thu 02 Jul 2009 14:00
by AndreyR
The problem occurs because the Column attribute is set for the properties by default (just as in Microsoft LINQ to SQL).
Your query will succeed if you manually remove the Column attributes for the properties of your CaseView entity.

Posted: Thu 02 Jul 2009 14:13
by crazypit
And how do you propose i can maintain something like this when i can only regenerate ALL the classes if i make even a simple change in my database?

"Manual" changes in a file that is automatically generated, is something not so good as you can imagine...

Posted: Fri 03 Jul 2009 07:40
by AndreyR
We will investigate the possibility of changing the default behaviour in one of the nearest builds.
As for the manual changes, as a workaround I recommend you to put the CaseVIew entity into the DataContext.cs file.
It is not regenerated after changes are made to the model.