views:

44

answers:

1

I have successfully used EF4 to insert rows automatically with a server generated GUID:

http://leedumond.com/blog/using-a-guid-as-an-entitykey-in-entity-framework-4/

Now how does one perform this task if there exists a RowID (guid) and ParentRowID (guid) with a primary-foreign key constraint between the two? What would I set .ParentRowID to?

            NewCut = New Row With
            {
                .ParentRowID = .RowID
            }

SaveChanges throws a fit every time.

The fact that the primary key is a GUID is in fact irrelevant because I attempted the same test using a standard autogenerated integer without success.

A: 

The solution is as simple as the one you have posted.
Just create both parent and child entities in code, do not set Entity Key and not forget to set StoreGeneratedPattern for all server-generated Guid columns.
Then perform either MasterEntityInstance.Children.Add(ChildEntityInstance), or ChildEntityInstance.MasterEntity = MasTerEntityInstance and call SaveChanges.
After the SaveChanges call both guid properties will be populated with the correct Guid values, and ChildEntity.MasterEntity Entity Key will be populated with the necessary MasterEntity Entity Key value.

Devart