Code EF insertions premier Parent-enfant avec colonnes d'identité
j'ai le modèle suivant.
class Parent
{
int ParentId (identity column) { get; set; }
string ParentName { get; set; }
virtual ICollection<Child> Children { get; set; }
}
class Child
{
int ChildId (identity column) { get; set; }
string ChildName { get; set; }
int ParentID { get ; set; } //foreign key to Parent(ParentID)
}
Comment puis-je insérer quelques lignes à mon parent et à mon enfant dans une seule transaction? Fondamentalement, je veux obtenir l'identité générée sur le parent (disons que j'insère une ligne dans le parent) et insérez des lignes d'enfant avec cette valeur? Comment y parvenir en utilisant D'abord le Code?
2 réponses
vous ne devriez pas vous soucier de la valeur de L'Id de Parent
obtiendra afin d'insérer Child
lignes. Cela devrait être suffisant:
var parent = new Parent
{
// fill other properties
Children = new List<Child>()
}
parent.Children.add(new Child { /*fill values */);
dbContext.Parents.Add(parent); // whatever your context is named
dbContext.SaveChanges();
Pour l'enregistrement, l'ID sera attribué après appel de SaveChanges()
, donc si vous vraiment besoin de l'ID avant d'insérer un Child
entité que vous pouvez toujours appeler SaveChanges()
deux fois.
Encore une fois, cela ne devrait pas être nécessaire.
soit dit en passant, je recommande de faire la propriété de clé étrangère de Child
Parent
une propriété de navigation, donc le Child
la classe ressemblerait à:
class Child
{
public int ChildId { get; set; } // identity column
public string ChildName { get; set; }
public virtual Parent Parent { get ; set; } //foreign key to Parent
}
de cette façon, vous pouvez toujours accéder au parent de l'enfant directement sans avoir à le récupérer explicitement à partir de la base de données vous-même (il sera chargé paresseux).
pour un exemple de comment faire cela, consultez la nouvelle série de tutoriels EF Code First MVC. Le sixième de la série en est un exemple. Le premier de la série de 10 est ici: http://www.asp.net/entity-framework/tutorials/creating-an-entity-framework-data-model-for-an-asp-net-mvc-application