1

J'ai commencé à utiliser Entity Framework (Utilisation de classes POCO) pour un projet MVC 3 C# avec Razor Views.Plusieurs à plusieurs relations | Supprimer

Je ne parviens pas à implimenting la Beaucoup de nombreuses fonctionnalités avec elle

Je suis en train de créer une vue que lorsqu'un utilisateur est en mesure d'ajouter des numéros de téléphone, e-mails, musictypes, drapeaux, détient, ntoes, etc. .. par beaucoup de nombreuses relations

) c.-à-Société ----> CompanyVenue < ---- Lieu

J'ai réussi à obtenir EF stockage du lieu et étant alors capables d'assigner le lieu après en sélectionnant le lieu dans une liste et en l'affectant au y.

Existe-t-il un moyen d'amener The Venue à stocker automatiquement la relation de la société vers le site sans avoir à la sélectionner dans une liste?

Si cela n'est pas possible, quelqu'un peut-il partager une meilleure façon d'implémenter en utilisant EF.

Répondre

0

Juste en ayant cette configuration simple:

public Company 
{ 
    public virtual ICollection<Venue> Venues { get; set; } 
} 

public Venue 
{ 
    public virtual ICollection<Company> Companies { get; set; } 
} 

EF devrait être en mesure de déterminer que vous déclarer plusieurs à-plusieurs. Je ne sais pas si vous utilisez EF 4.1 Code First ou le concepteur de modèle, mais Code First aurait dû en avoir assez pour créer la table CompanyVenue pour vous. Et le concepteur de modèle définira pour vous la table "link" et dès que vous déclarerez une relation many-to-many.

Notez que les propriétés de navigation sont marquées virtual. Ceci est nécessaire dans le cas de collections afin que EF puisse effectuer les mises à jour appropriées dans les entités associées.

0

Voici comment procéder manuellement dans Code First. Tout d'abord vos classes POCO pourrait ressembler à ceci:

public class Company 
{ 
    public Company() 
    { 
     Venues = new List<Venue>(); 
    } 
    public int CompanyID { get; set; } 
    public string CompanyName { get; set; } 
    public virtual ICollection<Venue> Venues { get; set; } 
} 

public class Venue 
{ 
    public int VenueID { get; set; } 
    public string VenueName { get; set; } 
    public virtual ICollection<Company> Companies { get; set; } 
} 

Dans votre DbContext:

public IDbSet<Company> Companies { get; set; } 
public IDbSet<Venue> Venues { get; set; } 

également dans la classe DbContext remplacer la méthode de OnModelCreating. Voici comment vous associez nombreux à plusieurs entre l'entreprise et Lieu:

protected override void OnModelCreating(DbModelBuilder modelBuilder) 
{ 
    modelBuilder.Entity<Company>() 
     .HasMany(comp => comp.Venues) 
     .WithMany(venue => venue.Companies) 
     .Map(mc => 
     { 
     mc.ToTable("T_Company_Venue"); 
     mc.MapLeftKey("CompanyID"); 
     mc.MapRightKey("VenueID"); 
     } 
    ); 

    base.OnModelCreating(modelBuilder); 
} 

Je lui ai répondu une autre EF plusieurs à plusieurs questions avec le code échantillon complet ici:

MVC many to many

j'ai écrit aussi ci-dessus dans 2 messages de blog avec une solution complète et exemple de code disponible pour téléchargement:

Partie 1:

Saving many to many part 1

Partie 2:

Saving many to many part 2

Questions connexes