Entity Framework ajout d'enregistrement dans de nombreux de nombreux la table de mappage
J'ai 3 tables,
1) Client (Id, Nom, bla bla)
2) CustomerGroups (GroupId, GroupName)
3) CustomerInGroups (Code Client, GroupId)
using (var context = DataObjectFactory.CreateContext())
{
context.Customers.Add(entity);
context.SaveChanges();
return entity.Id;
}
Comment puis-je ajouter un enregistrement dans CustomerInGroups? EntityFramework ne génère pas des entités telles plusieurs-à-plusieurs tables de mappage
Edit:
À la fois la colonne d'Id de la Clientèle et CustomerGroups sont définies à l'auto incrément.
Donc, à mon CustomersGroup table, j'ai
Id Name
----------------------------
1 Normal
2 VIP
J'ai essayé de faire ce que l'une des affiches proposées:
entity.CustomerGroups = new List<CustomerGroup>
{
new CustomerGroup {Id = 2 }
};
context.Customers.Add(entity);
context.SaveChanges();
return entity.Id;
Cependant, quand j'ai fait cela, au lieu de créer un enregistrement dans la table de mappage comme ceci:
CustomerId GroupId
----------------------------
1 2
Ce que j'ai obtenu était
CustomerInGroups
CustomerId GroupId
----------------------------
1 3
CustomerGroups
Id Name
----------------------------
1 Normal
2 VIP
3 NULL
Il a réellement créé une autre entrée dans mon CustomerGroups table, ce qui n'est pas ce que je veux
OriginalL'auteur Null Reference | 2013-03-07
Vous devez vous connecter pour publier un commentaire.
Voler un peu à l'aveugle, puisque vous n'avez pas à inclure ce que propriétés
entity
. Mais vous devez avoir une propriété de la relation deCustomerGroups
. Juste définir une propriété avec les groupes que vous souhaitez être lié à. Par exemple, ce serait de créer un nouveau nom de Groupe "foo bar" et se rapportent à l'entité de ce groupe.Si la relation est configuré correctement, EF va automatiquement insérer un enregistrement dans
CustomerGroups
et insérez une relation dans leCustomerInGroups
table.EDIT:
Si vous essayez d'ajouter un
CustomerGroup
à un nouveau Client. Vous aurez envie d'obtenir leCustomerGroup
à partir de la base de données tout d'abord, puis l'ajouter à l'entité Client, vous êtes l'insertion.Édité ma réponse afin de permettre une
CustomerGroup
être déjà créé. Si vous pouvez rapporter à un déjà existantCustomerGroup
à partir d'un client.Même si j'ai suivi ce que vous faites lors de la 2ème entité existe, il est encore en train de créer un nouveau record pour moi 🙁
Vous pouvez poster une nouvelle question vos coordonnées, et le point de cette réponse comme un point de référence. Je pense que vous serez mieux servis par la communauté.
OriginalL'auteur Steven V
Si vous essayez de assing un existant client à un _existing groupe et en supposant que le CustomerGroup objet expose une ICollection procédez de la manière suivante:
La méthode Find() est Entity Framework Code First (DbContext) méthode de recherche par Id. Je ne me souviens pas du haut de ma tête le "bon" ObjectContext façon de le faire, mais, mais .Seul(g => g.Id == 2) serait aussi travailler.
Idéalement, vous auriez du nous donner une meilleure idée de la façon dont vos entités sont mappés, donc nous savons comment vous concernant vos entités.
avez-vous poster une nouvelle question? Il est difficile de répondre simplement en fonction de votre commentaire. Comme un guide, assurez-vous de ne pas ajouter toute entité existante à n'importe quel contexte EF collections.
OriginalL'auteur Daniel
En Plus de @Steven-v de la réponse, Si vous avez déjà récupéré des groupes de clients et que vous ne voulez pas venir le chercher à nouveau à partir de db, vous pouvez simplement attacher au contexte.
OriginalL'auteur mesut