diff --git a/lib/Doctrine/Common/DataFixtures/Loader.php b/lib/Doctrine/Common/DataFixtures/Loader.php
index 5c5b0e54..01418404 100644
--- a/lib/Doctrine/Common/DataFixtures/Loader.php
+++ b/lib/Doctrine/Common/DataFixtures/Loader.php
@@ -135,7 +135,7 @@ public function addFixture(FixtureInterface $fixture)
             } elseif ($fixture instanceof DependentFixtureInterface) {
                 $this->orderFixturesByDependencies = true;
                 foreach($fixture->getDependencies() as $class) {
-                    if (class_exists($class)) {
+                    if (!isset($this->fixtures[$fixtureClass]) && class_exists($class)) {
                         $this->addFixture($this->createFixture($class));
                     }
                 }
diff --git a/tests/Doctrine/Tests/Common/DataFixtures/LoaderTest.php b/tests/Doctrine/Tests/Common/DataFixtures/LoaderTest.php
index 0b6e3f73..455e66bc 100644
--- a/tests/Doctrine/Tests/Common/DataFixtures/LoaderTest.php
+++ b/tests/Doctrine/Tests/Common/DataFixtures/LoaderTest.php
@@ -2,9 +2,11 @@
 
 namespace Doctrine\Tests\Common\DataFixtures;
 
+use Doctrine\Common\DataFixtures\DependentFixtureInterface;
 use Doctrine\Common\DataFixtures\FixtureInterface;
 use Doctrine\Common\DataFixtures\Loader;
 use Doctrine\Common\DataFixtures\SharedFixtureInterface;
+use Doctrine\Common\Persistence\ObjectManager;
 use TestFixtures\MyFixture1;
 use TestFixtures\NotAFixture;
 
@@ -58,4 +60,44 @@ public function testGetFixture()
 
         $this->assertInstanceOf(MyFixture1::class, $fixture);
     }
+
+    public function testAddFixtureDoesNotCreateFixtureDependencyIfAlreadyAdded()
+    {
+        $loader = new Loader();
+
+        $a = new AlreadyAddedFixture();
+
+        $loader->addFixture($a);
+
+        $b = new DependentOnAlreadyAddedFixture();
+
+        $loader->addFixture($b);
+
+        $this->assertEquals(1, AlreadyAddedFixture::$called, 'Should only have called the constructor once');
+    }
 }
+
+class AlreadyAddedFixture implements FixtureInterface
+{
+    static $called = 0;
+
+    public function __construct()
+    {
+        static::$called += 1;
+    }
+
+    public function load(ObjectManager $manager)
+    {}
+}
+
+class DependentOnAlreadyAddedFixture implements FixtureInterface, DependentFixtureInterface
+{
+    public function load(ObjectManager $manager)
+    {}
+
+    public function getDependencies()
+    {
+        return [AlreadyAddedFixture::class];
+    }
+}
+