Open
Description
DO 7.1.1
Sample
NB
Code without PairTo association throw 'FilterProvider' exception
using DoTest;
using Microsoft.Data.SqlClient;
using Xtensive.Orm;
using Xtensive.Orm.Configuration;
internal class Program
{
private static async Task Main(string[] args)
{
try
{
DbHelper.ExecuteNonQuery("DROP DATABASE [DO-Tests]");
}
catch (Exception)
{
}
DbHelper.ExecuteNonQuery("CREATE DATABASE [DO-Tests]");
var currentConnection = new SqlConnectionStringBuilder(DbHelper.ConnectionString());
var dc = new DomainConfiguration("sqlserver", currentConnection.ToString());
dc.Types.Register(typeof(TestEntity));
dc.Types.Register(typeof(LinkEntity));
dc.Types.Register(typeof(Descendant));
dc.UpgradeMode = DomainUpgradeMode.Recreate;
await using var d = await Domain.BuildAsync(dc);
await using (var s = await d.OpenSessionAsync())
await using (var t = await s.OpenTransactionAsync())
{
_ = s.Query.All<TestEntity>()
.Where(it => it.List.Select(e => e.Name).Contains((it.Link as Descendant).DescendantField))
.ToArray();
t.Complete();
}
}
}
[HierarchyRoot]
internal class LinkEntity : Entity
{
public LinkEntity(Session session) : base(session)
{
}
[Key]
[Field(Nullable = false)]
public int Id { get; set; }
[Field(Nullable = false)]
public string Name { get; set; }
[Field]
public TestEntity Link { get; set; }
}
internal class Descendant : LinkEntity
{
/// <inheritdoc />
public Descendant(Session session) : base(session)
{
}
[Field(Nullable = false)]
public string DescendantField { get; set; }
}
[HierarchyRoot]
internal class TestEntity : Entity
{
public TestEntity(Session session) : base(session)
{
}
[Key]
[Field(Nullable = false)]
public int Id { get; set; }
[Field(Nullable = false)]
public string Name { get; set; }
[Field]
public LinkEntity Link { get; set; }
[Field]
[Association(PairTo = "Link")]
public EntitySet<LinkEntity> List { get; set; }
}
Exception
Unhandled exception. Xtensive.Orm.QueryTranslationException: Unable to translate 'Query.All().Where(it => it.List.Select(e => e.Name).Contains((it.Link as Descendant).Name))' expression. See inner exception for details.
---> System.Collections.Generic.KeyNotFoundException: The given key 'IndexProvider' was not present in the dictionary.
at System.Collections.Generic.Dictionary`2.get_Item(TKey key)
at Xtensive.Orm.Rse.Transformation.ApplyPredicateCollector.TryAdd(FilterProvider filter)
at Xtensive.Orm.Rse.Transformation.ApplyProviderCorrectorRewriter.VisitFilter(FilterProvider provider)
at Xtensive.Orm.Rse.Providers.ProviderVisitor.Visit(CompilableProvider cp)
at Xtensive.Orm.Rse.Providers.CompilableProviderVisitor.VisitCompilable(CompilableProvider cp)
at Xtensive.Orm.Rse.Transformation.ApplyProviderCorrectorRewriter.VisitFilter(FilterProvider provider)
at Xtensive.Orm.Rse.Providers.ProviderVisitor.Visit(CompilableProvider cp)
at Xtensive.Orm.Rse.Providers.CompilableProviderVisitor.VisitCompilable(CompilableProvider cp)
at Xtensive.Orm.Rse.Providers.CompilableProviderVisitor.VisitExistence(ExistenceProvider provider)
at Xtensive.Orm.Rse.Providers.ProviderVisitor.Visit(CompilableProvider cp)
at Xtensive.Orm.Rse.Providers.CompilableProviderVisitor.VisitCompilable(CompilableProvider cp)
at Xtensive.Orm.Rse.Transformation.ApplyProviderCorrectorRewriter.VisitBinaryProvider(BinaryProvider provider, CompilableProvider& left, CompilableProvider& right)
at Xtensive.Orm.Rse.Transformation.ApplyProviderCorrectorRewriter.VisitApply(ApplyProvider provider)
at Xtensive.Orm.Rse.Providers.ProviderVisitor.Visit(CompilableProvider cp)
at Xtensive.Orm.Rse.Providers.CompilableProviderVisitor.VisitCompilable(CompilableProvider cp)
at Xtensive.Orm.Rse.Transformation.ApplyProviderCorrectorRewriter.VisitFilter(FilterProvider provider)
at Xtensive.Orm.Rse.Providers.ProviderVisitor.Visit(CompilableProvider cp)
at Xtensive.Orm.Rse.Providers.CompilableProviderVisitor.VisitCompilable(CompilableProvider cp)
at Xtensive.Orm.Rse.Transformation.ApplyProviderCorrectorRewriter.VisitSelect(SelectProvider provider)
at Xtensive.Orm.Rse.Providers.ProviderVisitor.Visit(CompilableProvider cp)
at Xtensive.Orm.Rse.Providers.CompilableProviderVisitor.VisitCompilable(CompilableProvider cp)
at Xtensive.Orm.Rse.Transformation.ApplyProviderCorrectorRewriter.Rewrite(CompilableProvider rootProvider)
at Xtensive.Orm.Rse.Transformation.ApplyProviderCorrector.Process(CompilableProvider rootProvider)
at Xtensive.Orm.Rse.Compilation.CompositePreCompiler.Process(CompilableProvider rootProvider)
at Xtensive.Orm.Providers.CompilationService.Compile(CompilableProvider provider, CompilerConfiguration configuration)
at Xtensive.Orm.Linq.Translator.Translate(ProjectionExpression projection, IEnumerable`1 tupleParameterBindings)
at Xtensive.Orm.Linq.Translator.Translate()
at Xtensive.Orm.Linq.QueryProvider.Translate(Expression expression, CompilerConfiguration compilerConfiguration)
--- End of inner exception stack trace ---
at Xtensive.Orm.Linq.QueryProvider.Translate(Expression expression, CompilerConfiguration compilerConfiguration)
at Xtensive.Orm.Linq.QueryProvider.Translate(Expression expression)
at Xtensive.Orm.Linq.QueryProvider.Execute[TResult](Expression expression, Func`4 runQuery)
at Xtensive.Orm.Linq.QueryProvider.ExecuteSequence[T](Expression expression)
at Xtensive.Orm.Linq.Queryable`1.GetEnumerator()
at System.Collections.Generic.LargeArrayBuilder`1.AddRange(IEnumerable`1 items)
at System.Collections.Generic.EnumerableHelpers.ToArray[T](IEnumerable`1 source)
at System.Linq.Enumerable.ToArray[TSource](IEnumerable`1 source)
at Program.Main(String[] args) in /Users/anton.guschin/RiderProjects/DoTest/DoTest/Program.cs:line 35
at Program.Main(String[] args) in /Users/anton.guschin/RiderProjects/DoTest/DoTest/Program.cs:line 40
at Program.Main(String[] args) in /Users/anton.guschin/RiderProjects/DoTest/DoTest/Program.cs:line 40
at Program.Main(String[] args) in /Users/anton.guschin/RiderProjects/DoTest/DoTest/Program.cs:line 40
at Program.<Main>(String[] args)
Metadata
Metadata
Assignees
Labels
No labels