267 votes

En quoi consiste la terminaison principale d’une association signifie en 1:1 relation dans Entity framework

public class Foo
{
    public string FooId{get;set;}
    public Boo Boo{get;set;}
}


public class Boo
{
    public string BooId{get;set;}
    public Foo Foo{get;set;}
}

J'ai essayé de le faire dans le Cadre de l'Entité lorsque j'ai reçu le message d'erreur:

Impossible de déterminer les principales d'une association entre les types de 'ConsoleApplication5.Boo " et " ConsoleApplication5.Foo'. Le principal de cette association doit être explicitement configuré à l'aide de la relation API fluent ou des annotations de données.

J'ai vu des questions sur StackOverflow avec une solution pour cette erreur, mais je veux comprendre ce que le terme "principal".

376voto

Ladislav Mrnka Points 218632

Dans la relation biunivoque une extrémité doit être principale et deuxième extrémité doit être dépendante. Terminaison principale est celle qui sera inséré tout d’abord, et qui peut exister sans celle dépendant. Terminaison dépendante est celle qui doit être inséré après le principal parce qu’il a une clé étrangère à l’entité de sécurité.

Dans le cas d’entité cadre FK en dépendant doit être également son PK donc dans votre cas, vous devez utiliser :

Fluent mappage ou

182voto

Leniel Macaferi Points 38324

Vous pouvez également utiliser le `` attribut d’annotation de données pour résoudre ce problème :

Il faut pour .

-4voto

Slava Points 590

Dans edmx concepteur de définie les propriétés de correcspondent non public (interne ou privé). Peut-être cette approche fonctionnera également avec modèle POCO.

-4voto

Jon Miller Points 69

Il semble que vous ne pouvez pas avoir une relation de 0..1 à 0..1. Il semble que vous devez avoir au moins un côté être requis. Semble moins qu’idéales.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X