In SQL, after the first join, the joins are specified using only <join operator> <table> constructs. This means that if you do:
A left join B
C left join B
The runtime isn't able to specify this as-is, it has to specify the join with C with the construct <join operator> <table>. So it will become:
A left join B right join C
Our relationship definitions in the API allow you to specify the relationship in full, so C left join B, so you don't have to worry about whether which side is already in the join list (in the example above, in the case of C left join B, 'B' is already in the join list). So it flips it around if it has to, as in the example above.
In your query, .LeftJoin(ArticleStockEntity.Relations.ArticleEntityUsingArticleCodi))
means you join towards ArticleStock, so ArticleStock left join Article, but article is already in the join list, so it will become <joins already there> right join ArticleStock, which is the same thing.