It's been added twice because when you do:
myFruit.Basket = myBasket;
it also will under the hood do:
myBasket.Fruits.Add(myFruit);
So Cake - Fruit - Basket will place the fetched Fruit in the Fruits collection of the Basket. Specifying Basket.Fruit in the path to fetch will fetch the fruit again and add it again to the fruits collection.
There's a flag in the collection as specified above by Walaa, to refuse additions of the same entity. This flag costs performance and in general you don't need checking for duplicates when doing prefetch path fetches so we switched it off by default.
How to switch it on for Basket.Fruits. By default, and entity in adapter doesn't get its containing entity collections yet, they're created on the fly.
So what you could do is the following:
add a partial class to the generated db generic project for BasketEntity. In that class, override OnInitClassMembersComplete().
In there do:
this.Fruits.DoNotPerformAddIfPresent = true;
now, when fetching fruits using your prefetch path, you won't receive duplicates in fruits. It's a little slower as the code will search linearly for the existing entity based on Equals(), however with not that much fruits in Basket (e.g. < 100) you won't notice it. It has no other impact on your code, by default duplicates are filtered out in fetches anyway.