title: Difference between .WithMany() and .WithOptional()?
body: <p>Below are two similar fluent API configurations:</p>
  
  <p><strong>WithMany()</strong></p>
  
  <pre><code>modelBuilder.Entity&lt;Country&gt;()
              .HasRequired(cou =&gt; cou.Currency)
              .WithMany()
              .WillCascadeOnDelete(false); 
  </code></pre>
  
  <p><strong>WithOptional()</strong></p>
  
  <pre><code>modelBuilder.Entity&lt;Country&gt;()
              .HasRequired(cou =&gt; cou.Currency)
              .WithOptional()
              .WillCascadeOnDelete(false);
  </code></pre>
  
  <p>What I am trying to express here is: Every <code>Country</code> requires a concrete <code>Currency</code>, but a <code>Currency</code> can be assigned to zero, one or many Countries.</p>
  
  <p>Which of the above statements would I have to use? Or in other words: What exactly is the difference between <code>.WithMany()</code> and <code>.WithOptional()</code> operators?</p>