Multithreading problem: Association key 'A_Id' not found for type 'B
See original GitHub issueI have many of threads. Each thread creates DataConnection object. Sometimes (very rarely) i get following exception:
Association key ‘A_Id’ not found for type 'B
linq2db.dll!LinqToDB.Linq.Builder.TableBuilder.AssociatedTableContext.AssociatedTableContext(LinqToDB.Linq.Builder.ExpressionBuilder builder, LinqToDB.Linq.Builder.TableBuilder.TableContext parent, LinqToDB.Mapping.AssociationDescriptor association) Line 1312 C#
linq2db.dll!LinqToDB.Linq.Builder.TableBuilder.TableContext.GetAssociation.AnonymousMethod__b6(LinqToDB.Mapping.AssociationDescriptor a) Line 1230 C#
System.Core.dll!System.Linq.Enumerable.WhereSelectEnumerableIterator<LinqToDB.Mapping.AssociationDescriptor,LinqToDB.Linq.Builder.TableBuilder.AssociatedTableContext>.MoveNext() Unknown
System.Core.dll!System.Linq.Enumerable.FirstOrDefault<LinqToDB.Linq.Builder.TableBuilder.AssociatedTableContext>(System.Collections.Generic.IEnumerable<LinqToDB.Linq.Builder.TableBuilder.AssociatedTableContext> source) Unknown
linq2db.dll!LinqToDB.Linq.Builder.TableBuilder.TableContext.GetAssociation(System.Linq.Expressions.Expression expression, int level) Line 1232 C#
linq2db.dll!LinqToDB.Linq.Builder.TableBuilder.TableContext.FindTable(System.Linq.Expressions.Expression expression, int level, bool throwException) Line 1197 C#
linq2db.dll!LinqToDB.Linq.Builder.TableBuilder.TableContext.IsExpression(System.Linq.Expressions.Expression expression, int level, LinqToDB.Linq.Builder.RequestFor requestFor) Line 757 C#
linq2db.dll!LinqToDB.Linq.Builder.SelectContext.IsExpressionInternal.AnonymousMethod__48(LinqToDB.Linq.Builder.IBuildContext ctx, System.Linq.Expressions.Expression ex, int l) Line 650 C#
linq2db.dll!LinqToDB.Linq.Builder.SelectContext.ProcessScalar<LinqToDB.Linq.Builder.IsExpressionResult>(System.Linq.Expressions.Expression expression, int level, System.Func<LinqToDB.Linq.Builder.IBuildContext,System.Linq.Expressions.Expression,int,LinqToDB.Linq.Builder.IsExpressionResult> action, System.Func<LinqToDB.Linq.Builder.IsExpressionResult> defaultAction) Line 885 C#
linq2db.dll!LinqToDB.Linq.Builder.SelectContext.IsExpressionInternal(System.Linq.Expressions.Expression expression, int level, LinqToDB.Linq.Builder.RequestFor requestFlag) Line 647 C#
linq2db.dll!LinqToDB.Linq.Builder.SelectContext.IsExpression(System.Linq.Expressions.Expression expression, int level, LinqToDB.Linq.Builder.RequestFor requestFlag) Line 610 C#
linq2db.dll!LinqToDB.Linq.Builder.ExpressionBuilder.ConvertExpressions(LinqToDB.Linq.Builder.IBuildContext context, System.Linq.Expressions.Expression expression, LinqToDB.Linq.Builder.ConvertFlags queryConvertFlag) Line 615 C#
linq2db.dll!LinqToDB.Linq.Builder.SelectContext.ConvertToSql(System.Linq.Expressions.Expression expression, int level, LinqToDB.Linq.Builder.ConvertFlags flags) Line 259 C#
linq2db.dll!LinqToDB.Linq.Builder.SelectContext.ConvertToIndexInternal(System.Linq.Expressions.Expression expression, int level, LinqToDB.Linq.Builder.ConvertFlags flags) Line 462 C#
linq2db.dll!LinqToDB.Linq.Builder.SelectContext.ConvertToIndex(System.Linq.Expressions.Expression expression, int level, LinqToDB.Linq.Builder.ConvertFlags flags) Line 413 C#
linq2db.dll!LinqToDB.Linq.Builder.DistinctBuilder.BuildMethodCall(LinqToDB.Linq.Builder.ExpressionBuilder builder, System.Linq.Expressions.MethodCallExpression methodCall, LinqToDB.Linq.Builder.BuildInfo buildInfo) Line 24 C#
linq2db.dll!LinqToDB.Linq.Builder.MethodCallBuilder.BuildSequence(LinqToDB.Linq.Builder.ExpressionBuilder builder, LinqToDB.Linq.Builder.BuildInfo buildInfo) Line 22 C#
linq2db.dll!LinqToDB.Linq.Builder.ExpressionBuilder.BuildSequence(LinqToDB.Linq.Builder.BuildInfo buildInfo) Line 177 C#
linq2db.dll!LinqToDB.Linq.Builder.ConcatUnionBuilder.BuildMethodCall(LinqToDB.Linq.Builder.ExpressionBuilder builder, System.Linq.Expressions.MethodCallExpression methodCall, LinqToDB.Linq.Builder.BuildInfo buildInfo) Line 25 C#
linq2db.dll!LinqToDB.Linq.Builder.MethodCallBuilder.BuildSequence(LinqToDB.Linq.Builder.ExpressionBuilder builder, LinqToDB.Linq.Builder.BuildInfo buildInfo) Line 22 C#
linq2db.dll!LinqToDB.Linq.Builder.ExpressionBuilder.BuildSequence(LinqToDB.Linq.Builder.BuildInfo buildInfo) Line 177 C#
linq2db.dll!LinqToDB.Linq.Builder.ExpressionBuilder.Build<Telda.AP.Model.Entities.Citizen>() Line 148 C#
linq2db.dll!LinqToDB.Linq.Query<Telda.AP.Model.Entities.Citizen>.GetQuery(LinqToDB.Linq.IDataContextInfo dataContextInfo, System.Linq.Expressions.Expression expr) Line 152 C#
linq2db.dll!LinqToDB.Linq.ExpressionQuery<Telda.AP.Model.Entities.Citizen>.GetQuery(System.Linq.Expressions.Expression expression, bool cache) Line 84 C#
linq2db.dll!LinqToDB.Linq.ExpressionQuery<Telda.AP.Model.Entities.Citizen>.Execute(LinqToDB.Linq.IDataContextInfo dataContextInfo, System.Linq.Expressions.Expression expression) Line 76 C#
linq2db.dll!LinqToDB.Linq.ExpressionQuery<Telda.AP.Model.Entities.Citizen>.System.Collections.Generic.IEnumerable<T>.GetEnumerator() Line 156 C#
System.Core.dll!System.Linq.Buffer<Telda.AP.Model.Entities.Citizen>.Buffer(System.Collections.Generic.IEnumerable<Telda.AP.Model.Entities.Citizen> source) Unknown
System.Core.dll!System.Linq.Enumerable.ToArray<Telda.AP.Model.Entities.Citizen>(System.Collections.Generic.IEnumerable<Telda.AP.Model.Entities.Citizen> source) Unknown
> CallingMethod C#
B really does not have association with key A_Id. But A_Id (and A property with asociation attribute) has class C, which is descendant of class B (C : B). In the CallingMethod (from stack trace):
dataConnection.GetTable<C>().Select(c => c.A).Distinct()
Association attributes are writen properly, as CallingMethod works fine usually.
Issue Analytics
- State:
- Created 7 years ago
- Comments:7 (7 by maintainers)
Top Results From Across the Web
Multi-threading issue with find/merge JPA - java
The method being invoked calls the em.find(Class<T> entityClass, Object primaryKey) with the ID of my Entity(Binary), if the object exists ...
Read more >Top 10 Most Common Spring Framework Mistakes
Common Mistake #5: Improperly Dealing with Multithreading. Regardless of whether it is encountered in desktop or web apps, Spring or no Spring, multithreading...
Read more >Scaling read aligners to hundreds of threads on general ...
In short, thread scaling suffers when added threads must access distant memories or when they compete for the same memory locations as existing...
Read more >Spring Data MongoDB - Reference Documentation
An id property or field declared as BigInteger in the Java class is converted to and stored as an ObjectId by using a...
Read more >TelephonyManager
Build apps that give your users seamless experiences from phones to tablets, watches, and more. ... Learn to build for your use case...
Read more >
Top Related Medium Post
No results found
Top Related StackOverflow Question
No results found
Troubleshoot Live Code
Lightrun enables developers to add logs, metrics and snapshots to live code - no restarts or redeploys required.
Start Free
Top Related Reddit Thread
No results found
Top Related Hackernoon Post
No results found
Top Related Tweet
No results found
Top Related Dev.to Post
No results found
Top Related Hashnode Post
No results found
Super! Thanks a lot, it looks like i know where is the problem!
Should be fixed now