title: ModelState.IsValid is false due to the "required" navigation property in Entity
body: <p>The <code>Required</code> annotation in a Navigation Property in <em>LessonQuestionDetails</em>  <strong>Entity-model</strong>, which enables <strong>Cascade-delete table creation through code-first approach</strong>, is causing <code>ModelState.IsValid</code> to become <code>false</code>. Is there a workaround to set cascade delete without the <code>Required</code> annotation.</p>
  
  <p><strong>Entity-model</strong>    </p>
  
  <pre class="lang-cs prettyprint-override"><code>public partial class LessonQuestionDetail
  {
      [Key, Column(Order = 0), DatabaseGenerated(DatabaseGeneratedOption.None)]
      public int LessonID { get; set; }
  
      [Key, Column(Order = 1), DatabaseGenerated(DatabaseGeneratedOption.None)]
      public int QuestionNumber { get; set; }
  
      [Key, Column(Order = 2), DatabaseGenerated(DatabaseGeneratedOption.None)]
      public byte ChoiceNumber { get; set; }
      public string Choice { get; set; }
      public bool IsCorrect { get; set; }
  
      [Required]  // Sets the CASCADE constraint, while creating table
      public virtual LessonQuestion LessonQuestion { get; set; }
  }
  
  public partial class LessonQuestion
  {
      public LessonQuestion()
      {
          this.LessonQuestionDetails = new List&lt;LessonQuestionDetail&gt;();
      }
  
      public virtual ICollection&lt;LessonQuestionDetail&gt; LessonQuestionDetails { get; set; }
      //Other code
  }
  </code></pre>
  
  <p><strong>Controller</strong> </p>
  
  <pre><code>[HttpPost]
  public ActionResult EditLessonQuestionDetails(LessonQuestion lq)
  {
      SQLContext context = new SQLContext();
      int intChoiceNum=1;
      var errors = ModelState.Values.SelectMany(v =&gt; v.Errors); // There are errors
      var valid = ModelState.IsValid;  // sets False
      // Other code
  }
  </code></pre>