Entity Framework 6: Ajout d'un objet enfant à la liste des parents par rapport à la définition de la propriété de navigation de l'enfant au parent

J'ai une base de données existante avec deux tables MailServers et MailDomains. MailDomains a la colonne de la clé étrangère MailServerId pointant vers le Id colonne de clé primaire dans MailServers. Nous avons donc un un-à-plusieurs-relation ici.

J'ai suivi cet article et créé mon Entity Framework POCOs via le "premier Code de base de données" modèle dans le Modèle de Données d'Entité de l'Assistant. Ce produit les deux classes C#:

public partial class MailServer
{
    public MailServer()
    {
        MailDomains = new HashSet<MailDomain>();
    }

    public int Id { get; set; }

    public virtual ICollection<MailDomain> MailDomains { get; set; }
}



public partial class MailDomain
{
    public MailDomain()
    {
    }

    public int Id { get; set; }

    public string DomainName { get; set; }

    public int MailServerId { get; set; }
    public virtual MailServer MailServer { get; set; }
}

Maintenant, ma question est de savoir si il y a une différence entre les deux approches suivantes de la création et l'insertion de nouveaux objets de la base de données.

Approche (A): l'Ajout de nouvelles de l'enfant du parent à la liste:

        var mailServer = new MailServer();
        var mailDomain = new MailDomain() {
            DomainName = "foobar.net",
        };
        mailServer.MailDomains.Add(mailDomain);

        using(var context = new MyContext){
            context.MailServers.Add(mailServer);
            context.SaveChanges();
        }

Approche (B): la définition de l'enfant à une propriété de navigation pour le parent:

        var mailServer = new MailServer();
        var mailDomain = new MailDomain() {
            DomainName = "foobar.net",
            MailServer = mailServer,
        };

        using(var context = new MyContext){
            context.MailDomains.Add(mailDomain);
            context.SaveChanges();
        }

J'ai aussi supposer que dans l'approche (A) le nouveau MailDomain instance est automatiquement ajouté à la collection context.MailDomains tandis que dans l'approche (B) la nouvelle MailServer instance est automatiquement ajouté à la collection context.MailServers. Est-ce correct ou dois-je le faire manuellement?

Donc encore une fois, ma question est la suivante: les deux approches sont-ils interchangeables?
Il confond tout simplement moi que dans la base de données il n'y a qu'une seule propriété/colonne à définir (à savoir la clé étrangère dans MailDomains) alors que dans le code C# il y a deux propriétés (un dans chaque catégorie) et susceptibles d'être modifiés.

source d'informationauteur Joerg