i have the following model.
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)
}
How do i insert few rows to my parent and child in single transaction? Basically i want to get the identity generated on the parent(say i insert a row in parent) and insert child rows with that value? How this can be achieved using Code First?
For an example of how to do this, see the new EF Code First MVC tutorial series. The 6th one in the series has an example of this. The first one in the series of 10 is here: http://www.asp.net/entity-framework/tutorials/creating-an-entity-framework-data-model-for-an-asp-net-mvc-application
You shouldn't worry about what value the Id of
Parent
will get in order to insertChild
rows. This should be enough:For the record, the ID's will be assigned after calling
SaveChanges()
, so if you really need the ID before inserting aChild
entity you can always callSaveChanges()
twice.Again, this shouldn't be necessary though.
By the way, I would recommend making the Foreign Key property from
Child
toParent
a navigation property, so theChild
class would look like:That way you can always access the Child's parent directly without having to retrieve it explicitly from the database yourself (it will be lazy loaded).