-
Notifications
You must be signed in to change notification settings - Fork 53
Open
Description
Steps to reproduce
I am executing a LINQ to Entities query with Npgsql 4.0.6, EntityFramework 6.2.0 and EntityFramework6.Npgsql 3.2.0.0
This query has a master type (in_flag) and a subquery for getting the inner collection type (Settings).
in_flag entity is 1 to N relation with in_flag_setting entity in the database.
var curFlagPreQuery =
(
from mFlag in db.Context.in_flag
join mFlagType in db.Context.in_flag_type
on mFlag.type equals mFlagType.id
where
(mFlag.id == flagInfoItem.FlagId)
select new
{
Settings = (from mFlagSetting in mFlag.in_flag_setting
from mFlagSettingGrant in mFlagSetting.in_flag_settings_grants
where mFlagSettingGrant.role == usr.RoleStr && mFlagSettingGrant.visible
orderby mFlagSetting.creation_date ascending
select new FlagSetting
{
Id = mFlagSetting.id,
FlagId = mFlagSetting.flag,
Name = mFlagSetting.name,
Code = mFlagSetting.code,
EnglishName = mFlagSetting.name,
CreationDate = mFlagSetting.creation_date,
CreationUser = mFlagSetting.creation_user,
LastUpdateUser = mFlagSetting.last_upd_user,
UpdateDate = mFlagSetting.last_upd_date,
Value = mFlagSetting.value
})
}).Single();
The issue
The execution of query throws an exception
Exception message:
| An error occurred while executing the command definition. See the inner exception for details.
InnerException | PostgresException 42P08: could not determine data type of parameter $1
Stack trace:
in System.Data.Entity.Core.EntityClient.Internal.EntityCommandDefinition.ExecuteStoreCommands(EntityCommand entityCommand, CommandBehavior behavior) in System.Data.Entity.Core.Objects.Internal.ObjectQueryExecutionPlan.Execute[TResultType](ObjectContext context, ObjectParameterCollection parameterValues) in System.Data.Entity.Core.Objects.ObjectQuery`1.<>c__DisplayClassb.<GetResults>b__a() in System.Data.Entity.Core.Objects.ObjectContext.ExecuteInTransaction[T](Func`1 func, IDbExecutionStrategy executionStrategy, Boolean startLocalTransaction, Boolean releaseConnectionOnSuccess) in System.Data.Entity.Core.Objects.ObjectQuery`1.<>c__DisplayClassb.<GetResults>b__9() in System.Data.Entity.Infrastructure.DefaultExecutionStrategy.Execute[TResult](Func`1 operation) in System.Data.Entity.Core.Objects.ObjectQuery`1.GetResults(Nullable`1 forMergeOption) in System.Data.Entity.Core.Objects.ObjectQuery`1.<System.Collections.Generic.IEnumerable<T>.GetEnumerator>b__0() in System.Lazy`1.CreateValue() in System.Lazy`1.LazyInitValue() in System.Lazy`1.get_Value() in System.Data.Entity.Internal.LazyEnumerator`1.MoveNext() in System.Linq.Enumerable.SingleOrDefault[TSource](IEnumerable`1 source) in System.Data.Entity.Core.Objects.ELinq.ObjectQueryProvider.<GetElementFunction>b__2[TResult](IEnumerable`1 sequence) in System.Data.Entity.Core.Objects.ELinq.ObjectQueryProvider.ExecuteSingle[TResult](IEnumerable`1 query, Expression queryRoot) in System.Data.Entity.Core.Objects.ELinq.ObjectQueryProvider.System.Linq.IQueryProvider.Execute[TResult](Expression expression) in System.Data.Entity.Internal.Linq.DbQueryProvider.Execute[TResult](Expression expression) in System.Linq.Queryable.SingleOrDefault[TSource](IQueryable`1 source) in UserQuery.Main() in c:\Users\dlevis\AppData\Local\Temp\LINQPad\_dlxghkka\query_yifnan.cs:riga 40 in LINQPad.ExecutionModel.ClrQueryRunner.Run() in LINQPad.ExecutionModel.Server.RunQuery(QueryRunner runner)
--
### Further technical details
Npgsql version: 4.0.6
PostgreSQL version: 9.4
Operating system: Windows 10
It seems to be related to the parameter **usr.RoleStr** in the subquery. If I use a string constant, it works.
If I split the query in two subsequent queries, it works.
With old version of Npgsql 2.2.7, the same query works.
Metadata
Metadata
Assignees
Labels
No labels