title: The cast to value type 'Int32' failed because the materialized value is null
body: <p>I cannot for the life of me figure out what the issue is. Every time the query goes to execute "ToList()", I get the error above.</p>
  
  <p>Here's more information on it:</p>
  
  <pre><code>&lt;Error&gt;
  &lt;Message&gt;An error has occurred.&lt;/Message&gt;
  &lt;ExceptionMessage&gt;
  The cast to value type 'Int32' failed because the materialized value is null. Either the result type's generic parameter or the query must use a nullable type.
  &lt;/ExceptionMessage&gt;
  &lt;ExceptionType&gt;System.InvalidOperationException&lt;/ExceptionType&gt;
  &lt;StackTrace&gt;
  at System.Data.Common.Internal.Materialization.Shaper.ErrorHandlingValueReader`1.GetValue(DbDataReader reader, Int32 ordinal) at System.Data.Common.Internal.Materialization.Shaper.GetColumnValueWithErrorHandling[TColumn](Int32 ordinal) at lambda_method(Closure , Shaper ) at System.Data.Common.Internal.Materialization.Coordinator`1.ReadNextElement(Shaper shaper) at System.Data.Common.Internal.Materialization.Shaper`1.SimpleEnumerator.MoveNext() at System.Linq.Enumerable.WhereEnumerableIterator`1.MoveNext() at System.Collections.Generic.List`1..ctor(IEnumerable`1 collection) at System.Linq.Enumerable.ToList[TSource](IEnumerable`1 source) at TVDataWebAPI.Controllers.ETSShowsController.GetETSShows(String title, String episodeTitle, String genre, String showTypeDescription, String directorName, String releaseYear, String seasonEpisode) in c:\Users\rarbex\Documents\Visual Studio 2012\Projects\TVDataWebAPI\TVDataWebAPI\Controllers\ETSShowsController.cs:line 83 at lambda_method(Closure , Object , Object[] ) at System.Web.Http.Controllers.ReflectedHttpActionDescriptor.ActionExecutor.&lt;&gt;c__DisplayClass13.&lt;GetExecutor&gt;b__c(Object instance, Object[] methodParameters) at System.Web.Http.Controllers.ReflectedHttpActionDescriptor.ActionExecutor.Execute(Object instance, Object[] arguments) at System.Web.Http.Controllers.ReflectedHttpActionDescriptor.&lt;&gt;c__DisplayClass5.&lt;ExecuteAsync&gt;b__4() at System.Threading.Tasks.TaskHelpers.RunSynchronously[TResult](Func`1 func, CancellationToken cancellationToken)
  &lt;/StackTrace&gt;
  &lt;/Error&gt;   
  
  public IEnumerable&lt;ETSShows&gt; GetETSShows(string title = null,
  {
     string episodeTitle = null, string genre = null,
     string showTypeDescription = null,
     string directorName = null,
     string releaseYear = null,
     string seasonEpisode = null)
     {
        IQueryable&lt;ETSShows&gt; query = from shows in db.ETS_Shows
        from episodes in db.ETS_Episodes.Where(v =&gt; v.ShowId == shows.ShowId).DefaultIfEmpty()
        from genres in db.ETS_LKP_Genres.Where(s =&gt; s.GenreCode == shows.GenreCode).DefaultIfEmpty()
        from showTypes in db.ETS_LKP_ShowTypes.Where(z =&gt; z.ShowTypeCode == shows.ShowTypeCode).DefaultIfEmpty()
        from directors in db.ETS_Directors.Where(p =&gt; p.ShowId == shows.ShowId).DefaultIfEmpty()
        select new ETSShows
        {
           dataSource = "ETS",
           Title = shows.Title,
           EpisodeId = episodes.EpisodeId,
           EpisodeTitle = episodes.EpisodeTitle,
           GenreDescription = genres.GenreDescription,
           ShowTypeDescription = showTypes.ShowTypeDescription,
           Name = directors.Name,
           ReleaseYear = (int) shows.ReleaseYear,
           SeasonEpisode = episodes.SeasonEpisode,
           ShowId = shows.ShowId
        };
     }
  }
  
  public class ETSShows
  {
     public string dataSource { get; set; }
     public string Title { get; set; }
     public int EpisodeId { get; set; }
     public string EpisodeTitle { get; set; }
     public string GenreDescription { get; set; }
     public string ShowTypeDescription { get; set; }
     public string Name { get; set; }
     public int ReleaseYear { get; set; }
     public string SeasonEpisode { get; set; }
     public int ShowId { get; set; }
  }
  </code></pre>