InvalidOperationException

Discussion of open issues, suggestions and bugs regarding Entity Developer - ORM modeling and code generation tool
Post Reply
crazypit
Posts: 163
Joined: Wed 15 Apr 2009 08:43

InvalidOperationException

Post by crazypit » Thu 02 Jul 2009 12:58

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()

crazypit
Posts: 163
Joined: Wed 15 Apr 2009 08:43

Post by crazypit » Thu 02 Jul 2009 13:25

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()

AndreyR
Devart Team
Posts: 2919
Joined: Mon 07 Jul 2008 13:16

Post by AndreyR » Thu 02 Jul 2009 14:00

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.

crazypit
Posts: 163
Joined: Wed 15 Apr 2009 08:43

Post by crazypit » Thu 02 Jul 2009 14:13

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...

AndreyR
Devart Team
Posts: 2919
Joined: Mon 07 Jul 2008 13:16

Post by AndreyR » Fri 03 Jul 2009 07:40

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.

Post Reply