Entity Framework - Insérer avec une clé étrangère

c# entity-framework foreign-keys insert-update

Question

Toutes mes excuses s'il y a une réponse claire à cela quelque part. Mais je ne peux pas insérer dans un tableau simple car il contient une clé étrangère.

Table de tâches

  • TaskId (PK)
  • La description
  • StatusId (FK)

    Dans lequel j'essaye d'insérer comme ceci:

            Task t = new Task();
            t.Id = 1234;
            t.Title = "foo";
            t.Status = db.Status.ToList().First();
    

    Mais obtenez une erreur updateException: une relation est en cours d’ajout ou de suppression dans un AssociationSet 'FK_Task_Status'. Avec les contraintes de cardinalité, une «tâche» correspondante doit également être ajoutée ou supprimée.

    Comment puis-je insérer dans cette table?

    À votre santé

    ....

    Trouvé mon problème ....

    Mon schéma était faux. Lorsque j'ai créé ma clé étrangère, je l'ai dirigée vers le mauvais champ. J'ai regardé dans le profileur SQL, j'ai vu ceci:

    SELECT 1 AS [C1], [Extent1]. [Id] AS [Id], [Extent1]. [Description] AS [Description], [Extent2]. [Id] AS [Id1] DE [dbo]. [Statut] AS [étendue1] LEFT OUTER JOIN [dbo]. [Tâche] comme [étendue2] sur [étendue1]. [Id] = [étendue2]. [Id]

    Ce qui devrait être ceci (rejoindre sur statusId pas id):

    SELECT 1 AS [C1], [Extent1]. [Id] AS [Id], [Extent1]. [Description] AS [Description], [Extent2]. [Id] AS [Id1] DE [dbo]. [Statut] AS [Extension1] LEFT OUTER JOIN [dbo]. [Tâche] AS [Extension2] ON [Extension1]. [Id] = [Extension2]. [StatusId]

    Que je suis bête ;)

  • Réponse populaire

    Dans .net Framework 4.0, vous pouvez utiliser ce moyen simple:

     Task t = new Task();
        t.Id = 1234;
        t.Title = "foo";
        t.StatusId = 5678;
    

    référence: http://blogs.msdn.com/b/adonet/archive/2009/11/06/foreign-key-relationships-in-the-entity-framework.aspx



    Related

    Sous licence: CC-BY-SA with attribution
    Non affilié à Stack Overflow
    Est-ce KB légal? Oui, apprenez pourquoi
    Sous licence: CC-BY-SA with attribution
    Non affilié à Stack Overflow
    Est-ce KB légal? Oui, apprenez pourquoi