AddOrUpdate fonctionne pas comme prévu et produit des doublons

Je suis à l'aide de Code-Première DBContext à base de EF5 de l'installation.

Dans DbMigrationsConfiguration.Seed je suis en train de remplir DB par défaut des données factices. Pour accomplir cette tâche, j'utilise DbSet.AddOrUpdate méthode.

Le code le plus simple pour illustrer mon objectif:

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() > 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 => cc.Id, city);
    cityObjects[j] = city;
    j++;
}

J'ai essayé d'utiliser/omettre Id domaine ainsi que l'utilisation d' Id/Slug bien que la mise à jour du sélecteur.

quand Update-Database est exécuté, Id champ est ignoré et la valeur est générée automatiquement par le Serveur SQL de base de données et est rempli avec des doublons; Slug sélecteur permet de doublons et sur les exécutions ultérieures produit des exceptions (Sequence contains more than one element).

Est AddOrUpdate méthode destinée à travailler de cette façon? Dois-je effectuer upsert à la main?

InformationsquelleAutor berezovskyi | 2012-12-08