0

Je suis un débutant dans ASP.Net MVC et Entity Framework. Et je suis bloqué à définir un type de relation en utilisant l'API Fluent.Comment configurer une relation API fluide en relation zéro à zéro ou un à un

Donc, j'ai deux modèles:

Modèle A

Public Class A 
{ 
    [Key] 
    public int AId {get; set;} 
    public string AName {get;set;} 
} 

Modèle B

Public Class B 
{ 
    [Key] 
    public int BId {get; set;} 
    public string BName 
} 

Business Logic:

  1. A peut exister indépendamment
  2. B peut également exister indépendamment

  3. Mais lors de certains scénarios par exemple, disons quand lorsque l'utilisateur saisissez "2" dans la zone de texte de l'interface utilisateur. Dans ce scénario, je veux que A soit stocké dans BId.

  4. Une fois que BId a commencé à exister dans le tableau A, il ne peut plus exister dans le tableau A.

Maintenant, la raison pour laquelle je veux mettre cette relation est quand Bid est se stocké dans un tableau, je dois être sûr que ce n'est pas un entier aléatoire. Je veux la promesse que BId stocké dans une table existe réellement dans la table B.

Ma pensée:

J'ai besoin Optional Unique Foreign Key Relationship. Mais je ne suis pas sûr de savoir comment l'obtenir dans l'approche API CodeFirst Fluent

Voici ce que j'ai jusqu'à maintenant.

Modèle A

Public Class A 
{ 
    [Key] 
    public int AId {get; set;} 
    public string AName {get;set;} 
    public int BId {get;set;} 
    public virtual B {get;set;} 
} 

Question 1: Comment assurez-vous que chaque fois que je Bid dans une table, il doit être présent PK en B Tableau Question 2: Quel type de la relation d'entité que je traite? 1..0 ou 1..1 ou autre chose?

Modifier

Je veux quelque chose comme:

dBModelBuilder.Entity<A>() 
        .HasOptional(r=> r.B) 
        ........ 

Répondre

0

Pas besoin de configurer explicitement. Il suffit de rendre la propriété FK de A nulle et les conventions créeront le mappage souhaité. EG:

public class A 
{ 
    public int AID { get; set; } 
    public string Name { get; set; } 
    public int? BID { get; set; } 
    public virtual B B { get; set; } 
} 

public class B 
{ 
    public int BId { get; set; } 
    public string Name { get; set; } 
} 

Pour ce faire dans l'API Fluent ressemblerait à ceci:

 modelBuilder.Entity<A>() 
      .HasOptional(a => a.B) 
      .WithMany() 
      .HasForeignKey(a => a.BID); 
+0

Mais je veux apprendre l'approche de l'API Fluent. Que faire si je n'ai pas suivi la convention de clé primaire (EF).alors comment aurais-je mis en place cette relation – Unbreakable

+0

"Mais je veux apprendre l'approche de l'API FLuent", alors commencez ici: https://msdn.microsoft.com/fr-fr/library/jj591620(v=vs.113) .aspx –

+0

Monsieur, j'ai fait une tentative dans la section d'édition. Pouvez-vous le voir avec plaisir? Je veux quelque chose comme ça – Unbreakable