J'ai un problème, je dois créer un modèle où nous avons deux entités qui peuvent être reliées entre elles, mais peut également exister en tant qu'entités autonomes.Entity Framework - connexion Définir où aucune des deux parties est nécessaire
Le modèle ressemble actuellement à ceci:
public class Authorisation
{
public int AuthorisationID { get; set; }
public virtual Change Change { get; set; }
}
public class Change
{
public int ChangeID{ get; set; }
public virtual Authorisation Authorisation { get; set; }
public int? AuthorisationID{ get; set; }
}
La raison est que nous pouvons avoir un organisme indépendant d'enregistrement d'autorisation d'un changement, et certains changements nécessitent une autorisation et certains ne faites pas, si aucune des deux parties de la relation est requis.
Je peux le configurer avec l'API couramment comme ceci:
modelBuilder.Entity<Authorisation>()
.HasOptional(t => t.Change)
.WithOptionalPrincipal(t => t.Authorisation);
Et bien Alls, Sauf que la migration qu'il crée se présente comme suit
CreateTable(
"dbo.Changes",
c => new
{
ChangeID = c.Int(nullable: false, identity: true),
AuthorisationID = c.Int(),
Authorisation_AuthorisationID = c.Int(),
})
.PrimaryKey(t => t.ChangeID)
.ForeignKey("dbo.Authorisations", t => t.Authorisation_AuthorisationID)
.Index(t => t.Authorisation_AuthorisationID);
EF décide que sa va ajouter une nouvelle colonne (Authorisation_AuthorisationID) pour moi d'utiliser comme FK entre les deux entités, ce que je veux vraiment être en mesure de le faire est d'utiliser la propriété change.AuthorisationID comme FK sur l'autorisation, je ne peux pas trouver un façon de configurer cela du tout (S'il vous plaît noter que j'ai besoin de la FK pour être dans le modèle - pour la cohérence avec le reste de l'application plus que toute autre chose).
Pour résumer, je dois être en mesure de créer une relation entre deux entités où les deux parties de la relation sont facultatives et, si possible, je veux être en mesure de définir la colonne FK moi-même.
Suis-je simplement aborder ce problème? J'ai regardé le même bloc de code pendant si longtemps que je pourrais manquer quelque chose de simple.
To clarifier, après un peu de creuser à travers le code et en regardant ce que l'application est ac mettre dans la base de données le problème que j'ai en fait plus que je dois spécifier le FK moi-même, ou au moins être en mesure d'obtenir la clé générée automatiquement à partir d'une instance de l'entité – 5NRF