title: AddOrUpdate works not as expected and produces duplicates
body: <p>I'm using Code-First DBContext-based EF5 setup.</p>
  
  <p>In <code>DbMigrationsConfiguration.Seed</code> I'm trying to fill DB with default dummy data. To accomplish this task, I use <code>DbSet.AddOrUpdate</code> method.</p>
  
  <p>The simplest code to illustrate my aim:</p>
  
  <pre><code>j = 0;
  
  var cities = new[]
      {
          "Berlin",
          "Vienna",
          "London",
          "Bristol",
          "Rome",
          "Stockholm",
          "Oslo",
          "Helsinki",
          "Amsterdam",
          "Dublin"
      };
  var cityObjects = new City[cities.Length];
  
  
  foreach (string c in cities)
  {
      int id = r.NextDouble() &gt; 0.5 ? 0 : 1;
      var city = new City
          {
              Id = j,
              Name = c,
              Slug = c.ToLowerInvariant(),
              Region = regions[id],
              RegionId = regions[id].Id,
              Reviewed = true
          };
      context.CitySet.AddOrUpdate(cc =&gt; cc.Id, city);
      cityObjects[j] = city;
      j++;
  }
  </code></pre>
  
  <p>I've tried to use/omit <code>Id</code> field as well as to use <code>Id</code>/<code>Slug</code> property as update selector.</p>
  
  <p>when <code>Update-Database</code> is run, <code>Id</code> field is ignored and the value is generated automatically by SQL Server and DB is filled with duplicates; <code>Slug</code> selector allows duplicates and on subsequent runs produces exceptions (<code>Sequence contains more than one element</code>).</p>
  
  <p>Is <code>AddOrUpdate</code> method intended to work this way? Should I perform upsert by hand?</p>