public static void Seed(InheritanceRelationshipsContext context) { var nrb1 = new NestedReferenceBase { Name = "NRB1" }; var nrb2 = new NestedReferenceBase { Name = "NRB2" }; var nrb3 = new NestedReferenceBase { Name = "NRB3" }; var nrb4 = new NestedReferenceBase { Name = "NRB4 (dangling)" }; context.NestedReferences.AddRange(nrb1, nrb2, nrb3, nrb4); var nrd1 = new NestedReferenceDerived { Name = "NRD1" }; var nrd2 = new NestedReferenceDerived { Name = "NRD2" }; var nrd3 = new NestedReferenceDerived { Name = "NRD3" }; var nrd4 = new NestedReferenceDerived { Name = "NRD4" }; var nrd5 = new NestedReferenceDerived { Name = "NRD4 (dangling)" }; context.NestedReferences.AddRange(nrd1, nrd2, nrd3, nrd5); var ncb11 = new NestedCollectionBase { Name = "NCB11" }; var ncb21 = new NestedCollectionBase { Name = "NCB21" }; var ncb22 = new NestedCollectionBase { Name = "NCB22" }; var ncb31 = new NestedCollectionBase { Name = "NCB31" }; var ncb41 = new NestedCollectionBase { Name = "NCB41 (dangling)" }; context.NestedCollections.AddRange(ncb11, ncb21, ncb22, ncb31, ncb41); var ncd11 = new NestedCollectionDerived { Name = "NCD11" }; var ncd21 = new NestedCollectionDerived { Name = "NCD21" }; var ncd31 = new NestedCollectionDerived { Name = "NCD21" }; var ncd32 = new NestedCollectionDerived { Name = "NCD32" }; var ncd41 = new NestedCollectionDerived { Name = "NCD41" }; var ncd42 = new NestedCollectionDerived { Name = "NCD42" }; var ncd51 = new NestedCollectionDerived { Name = "NCD52 (dangling)" }; var ncd52 = new NestedCollectionDerived { Name = "NCD52 (dangling)" }; context.NestedCollections.AddRange(ncd11, ncd21, ncd31, ncd32, ncd41, ncd42, ncd51, ncd52); var brob1 = new BaseReferenceOnBase { Name = "BROB1", NestedReference = nrb1, NestedCollection = new List<NestedCollectionBase> { ncb11 } }; var brob2 = new BaseReferenceOnBase { Name = "BROB2", NestedReference = nrd1, NestedCollection = new List<NestedCollectionBase> { ncd11 } }; var brob3 = new BaseReferenceOnBase { Name = "BROB3 (dangling)" }; context.BaseReferencesOnBase.AddRange(brob1, brob2, brob3); var drob1 = new DerivedReferenceOnBase { Name = "DROB1", NestedReference = nrb2, NestedCollection = new List<NestedCollectionBase> { ncb21, ncb22 } }; var drob2 = new DerivedReferenceOnBase { Name = "DROB2", NestedReference = nrd2, NestedCollection = new List<NestedCollectionBase> { ncd21 } }; var drob3 = new DerivedReferenceOnBase { Name = "DROB3" }; var drob4 = new DerivedReferenceOnBase { Name = "DROB4 (half-dangling)", NestedReference = nrd3, NestedCollection = new List<NestedCollectionBase> { ncd31, ncd32 } }; var drob5 = new DerivedReferenceOnBase { Name = "DROB5 (dangling)" }; context.BaseReferencesOnBase.AddRange(drob1, drob2, drob3, drob4, drob5); var rob1 = new ReferenceOnBase { Name = "ROB1" }; var rob2 = new ReferenceOnBase { Name = "ROB2" }; var rob3 = new ReferenceOnBase { Name = "ROB3" }; var rob4 = new ReferenceOnBase { Name = "ROB4" }; context.ReferencesOnBase.AddRange(rob1, rob2, rob3, rob4); var bcob11 = new BaseCollectionOnBase { Name = "BCOB11", NestedReference = nrb1, NestedCollection = new List<NestedCollectionBase> { ncb11 } }; var bcob12 = new BaseCollectionOnBase { Name = "BCOB12", NestedReference = nrd1, NestedCollection = new List<NestedCollectionBase> { ncd11 } }; var bcob21 = new BaseCollectionOnBase { Name = "BCOB21" }; var bcob31 = new BaseCollectionOnBase { Name = "BCOB31 (dangling)", NestedReference = nrb2, NestedCollection = new List<NestedCollectionBase> { ncb21, ncb22 } }; var bcob32 = new BaseCollectionOnBase { Name = "BCOB32 (dangling)" }; context.BaseCollectionsOnBase.AddRange(bcob11, bcob12, bcob21, bcob31, bcob32); var dcob11 = new DerivedCollectionOnBase { Name = "DCOB11", NestedReference = nrd2, NestedCollection = new List<NestedCollectionBase> { ncd21 }, DerivedProperty = 1 }; var dcob12 = new DerivedCollectionOnBase { Name = "DCOB12", NestedReference = nrb3, NestedCollection = new List<NestedCollectionBase> { ncb31 }, DerivedProperty = 2 }; var dcob21 = new DerivedCollectionOnBase { Name = "DCOB21", DerivedProperty = 3 }; var dcob31 = new DerivedCollectionOnBase { Name = "DCOB31", NestedReference = nrd3, NestedCollection = new List<NestedCollectionBase> { ncd31, ncd32 }, DerivedProperty = 4 }; var dcob32 = new DerivedCollectionOnBase { Name = "DCOB32", DerivedProperty = 5 }; var dcob41 = new DerivedCollectionOnBase { Name = "DCOB41", DerivedProperty = 6 }; var dcob51 = new DerivedCollectionOnBase { Name = "DCOB51 (dangling)", NestedReference = nrd4, NestedCollection = new List<NestedCollectionBase> { ncd41, ncd42 }, DerivedProperty = 7 }; var dcob52 = new DerivedCollectionOnBase { Name = "DCOB52 (dangling)", DerivedProperty = 8 }; context.BaseCollectionsOnBase.AddRange(dcob11, dcob12, dcob21, dcob31, dcob32, dcob41, dcob51, dcob52); var cob11 = new CollectionOnBase { Name = "COB11" }; var cob12 = new CollectionOnBase { Name = "COB12" }; var cob21 = new CollectionOnBase { Name = "COB21" }; var cob31 = new CollectionOnBase { Name = "COB31" }; var cob32 = new CollectionOnBase { Name = "COB32" }; var cob33 = new CollectionOnBase { Name = "COB33" }; var cob41 = new CollectionOnBase { Name = "COB41" }; var cob51 = new CollectionOnBase { Name = "COB51 (dangling)" }; var cob52 = new CollectionOnBase { Name = "COB52 (dangling)" }; context.CollectionsOnBase.AddRange(cob11, cob12, cob21, cob31, cob32, cob33, cob41, cob51, cob52); var brod1 = new BaseReferenceOnDerived { Name = "BROD1" }; var brod2 = new BaseReferenceOnDerived { Name = "BROD2 (dangling)" }; var brod3 = new BaseReferenceOnDerived { Name = "BROD3 (dangling)" }; context.BaseReferencesOnDerived.AddRange(brod1, brod2, brod3); var drod1 = new DerivedReferenceOnDerived { Name = "DROD1" }; var drod2 = new DerivedReferenceOnDerived { Name = "DROD2" }; var drod3 = new DerivedReferenceOnDerived { Name = "DROD3 (dangling)" }; context.BaseReferencesOnDerived.AddRange(drod1, drod2, drod3); var rod1 = new ReferenceOnDerived { Name = "ROD1" }; var rod2 = new ReferenceOnDerived { Name = "ROD2" }; var rod3 = new ReferenceOnDerived { Name = "ROD3 (dangling)" }; context.ReferencesOnDerived.AddRange(rod1, rod2, rod3); var bcod11 = new BaseCollectionOnDerived { Name = "BCOD11" }; var bcod21 = new BaseCollectionOnDerived { Name = "BCOD21 (dangling)" }; var bcod22 = new BaseCollectionOnDerived { Name = "BCOD22 (dangling)" }; context.BaseCollectionsOnDerived.AddRange(bcod11, bcod21, bcod22); var dcod11 = new DerivedCollectionOnDerived { Name = "DCOD11" }; var dcod12 = new DerivedCollectionOnDerived { Name = "DCOD12" }; var dcod21 = new DerivedCollectionOnDerived { Name = "DCOD21" }; var dcod31 = new DerivedCollectionOnDerived { Name = "DCOD31 (dangling)" }; context.BaseCollectionsOnDerived.AddRange(dcod11, dcod12, dcod21, dcod31); var cod11 = new CollectionOnDerived { Name = "COD11" }; var cod21 = new CollectionOnDerived { Name = "COD21" }; var cod22 = new CollectionOnDerived { Name = "COD22" }; var cod31 = new CollectionOnDerived { Name = "COD31 (dangling)" }; context.CollectionsOnDerived.AddRange(cod11, cod21, cod22, cod31); var baseEntity1 = new BaseInheritanceRelationshipEntity { Name = "Base1", BaseReferenceOnBase = brob1, DerivedReferenceOnBase = drob1, ReferenceOnBase = rob1, BaseCollectionOnBase = new List<BaseCollectionOnBase> { bcob11 }, DerivedCollectionOnBase = new List<DerivedCollectionOnBase> { dcob11 }, CollectionOnBase = new List<CollectionOnBase> { cob11, cob12 } }; var baseEntity2 = new BaseInheritanceRelationshipEntity { Name = "Base2", BaseReferenceOnBase = drob2, ReferenceOnBase = rob2, CollectionOnBase = new List<CollectionOnBase> { cob21 } }; var baseEntity3 = new BaseInheritanceRelationshipEntity { Name = "Base3", DerivedReferenceOnBase = drob2, BaseCollectionOnBase = new List<BaseCollectionOnBase> { dcob21 }, DerivedCollectionOnBase = new List<DerivedCollectionOnBase> { dcob21 } }; context.BaseEntities.AddRange(baseEntity1, baseEntity2, baseEntity3); var derivedEntity1 = new DerivedInheritanceRelationshipEntity { Name = "Derived1(4)", BaseSelfRerefenceOnDerived = baseEntity1, BaseReferenceOnBase = drob1, DerivedReferenceOnBase = drob3, ReferenceOnBase = rob3, BaseCollectionOnBase = new List<BaseCollectionOnBase> { dcob11, dcob12 }, DerivedCollectionOnBase = new List<DerivedCollectionOnBase> { dcob31, dcob32 }, CollectionOnBase = new List<CollectionOnBase> { cob31, cob32 }, BaseReferenceOnDerived = brod1, DerivedReferenceOnDerived = drod1, ReferenceOnDerived = rod1, BaseCollectionOnDerived = new List<BaseCollectionOnDerived> { bcod11 }, DerivedCollectionOnDerived = new List<DerivedCollectionOnDerived> { dcod11, dcod12 }, CollectionOnDerived = new List<CollectionOnDerived> { cod11 } }; var derivedEntity2 = new DerivedInheritanceRelationshipEntity { Name = "Derived2(5)", BaseSelfRerefenceOnDerived = baseEntity2, ReferenceOnBase = rob4, BaseReferenceOnBase = brob2, CollectionOnBase = new List<CollectionOnBase> { cob41 }, BaseReferenceOnDerived = drod2, ReferenceOnDerived = rod2, CollectionOnDerived = new List<CollectionOnDerived> { cod21, cod22 } }; var derivedEntity3 = new DerivedInheritanceRelationshipEntity { Name = "Derived3(6)", BaseSelfRerefenceOnDerived = baseEntity3, DerivedReferenceOnBase = drob4, BaseCollectionOnBase = new List<BaseCollectionOnBase> { bcob21 }, DerivedCollectionOnBase = new List<DerivedCollectionOnBase> { dcob41 }, DerivedReferenceOnDerived = drod2, BaseCollectionOnDerived = new List<BaseCollectionOnDerived> { dcod11, dcod12 }, DerivedCollectionOnDerived = new List<DerivedCollectionOnDerived> { dcod21 } }; context.BaseEntities.AddRange(derivedEntity1, derivedEntity2, derivedEntity3); baseEntity1.DerivedSefReferenceOnBase = derivedEntity1; baseEntity2.DerivedSefReferenceOnBase = derivedEntity2; baseEntity3.DerivedSefReferenceOnBase = derivedEntity3; var principalEntity1 = new PrincipalEntity { Name = "PE1" }; var principalEntity2 = new PrincipalEntity { Name = "PE2" }; context.PrincipalEntities.AddRange(principalEntity1, principalEntity2); var referencedEntity1 = new ReferencedEntity { Name = "RE1", Principals = new List<PrincipalEntity> { principalEntity1 } }; var referencedEntity2 = new ReferencedEntity { Name = "RE2", Principals = new List<PrincipalEntity> { principalEntity2 } }; context.ReferencedEntities.AddRange(referencedEntity1, referencedEntity2); principalEntity2.Reference = referencedEntity1; principalEntity1.Reference = referencedEntity2; context.SaveChanges(); }
public static void Seed(InheritanceRelationshipsContext context) { var nrb1 = new NestedReferenceBase { Name = "NRB1" }; var nrb2 = new NestedReferenceBase { Name = "NRB2" }; var nrb3 = new NestedReferenceBase { Name = "NRB3" }; var nrb4 = new NestedReferenceBase { Name = "NRB4 (dangling)" }; context.NestedReferences.AddRange(nrb1, nrb2, nrb3, nrb4); var nrd1 = new NestedReferenceDerived { Name = "NRD1" }; var nrd2 = new NestedReferenceDerived { Name = "NRD2" }; var nrd3 = new NestedReferenceDerived { Name = "NRD3" }; var nrd4 = new NestedReferenceDerived { Name = "NRD4" }; var nrd5 = new NestedReferenceDerived { Name = "NRD4 (dangling)" }; context.NestedReferences.AddRange(nrd1, nrd2, nrd3, nrd5); var ncb11 = new NestedCollectionBase { Name = "NCB11" }; var ncb21 = new NestedCollectionBase { Name = "NCB21" }; var ncb22 = new NestedCollectionBase { Name = "NCB22" }; var ncb31 = new NestedCollectionBase { Name = "NCB31" }; var ncb41 = new NestedCollectionBase { Name = "NCB41 (dangling)" }; context.NestedCollections.AddRange(ncb11, ncb21, ncb22, ncb31, ncb41); var ncd11 = new NestedCollectionDerived { Name = "NCD11" }; var ncd21 = new NestedCollectionDerived { Name = "NCD21" }; var ncd31 = new NestedCollectionDerived { Name = "NCD21" }; var ncd32 = new NestedCollectionDerived { Name = "NCD32" }; var ncd41 = new NestedCollectionDerived { Name = "NCD41" }; var ncd42 = new NestedCollectionDerived { Name = "NCD42" }; var ncd51 = new NestedCollectionDerived { Name = "NCD52 (dangling)" }; var ncd52 = new NestedCollectionDerived { Name = "NCD52 (dangling)" }; context.NestedCollections.AddRange(ncd11, ncd21, ncd31, ncd32, ncd41, ncd42, ncd51, ncd52); var brob1 = new BaseReferenceOnBase { Name = "BROB1", NestedReference = nrb1, NestedCollection = new List <NestedCollectionBase> { ncb11 } }; var brob2 = new BaseReferenceOnBase { Name = "BROB2", NestedReference = nrd1, NestedCollection = new List <NestedCollectionBase> { ncd11 } }; var brob3 = new BaseReferenceOnBase { Name = "BROB3 (dangling)" }; context.BaseReferencesOnBase.AddRange(brob1, brob2, brob3); var drob1 = new DerivedReferenceOnBase { Name = "DROB1", NestedReference = nrb2, NestedCollection = new List <NestedCollectionBase> { ncb21, ncb22 } }; var drob2 = new DerivedReferenceOnBase { Name = "DROB2", NestedReference = nrd2, NestedCollection = new List <NestedCollectionBase> { ncd21 } }; var drob3 = new DerivedReferenceOnBase { Name = "DROB3" }; var drob4 = new DerivedReferenceOnBase { Name = "DROB4 (half-dangling)", NestedReference = nrd3, NestedCollection = new List <NestedCollectionBase> { ncd31, ncd32 } }; var drob5 = new DerivedReferenceOnBase { Name = "DROB5 (dangling)" }; context.BaseReferencesOnBase.AddRange(drob1, drob2, drob3, drob4, drob5); var rob1 = new ReferenceOnBase { Name = "ROB1" }; var rob2 = new ReferenceOnBase { Name = "ROB2" }; var rob3 = new ReferenceOnBase { Name = "ROB3" }; var rob4 = new ReferenceOnBase { Name = "ROB4" }; context.ReferencesOnBase.AddRange(rob1, rob2, rob3, rob4); var bcob11 = new BaseCollectionOnBase { Name = "BCOB11", NestedReference = nrb1, NestedCollection = new List <NestedCollectionBase> { ncb11 } }; var bcob12 = new BaseCollectionOnBase { Name = "BCOB12", NestedReference = nrd1, NestedCollection = new List <NestedCollectionBase> { ncd11 } }; var bcob21 = new BaseCollectionOnBase { Name = "BCOB21" }; var bcob31 = new BaseCollectionOnBase { Name = "BCOB31 (dangling)", NestedReference = nrb2, NestedCollection = new List <NestedCollectionBase> { ncb21, ncb22 } }; var bcob32 = new BaseCollectionOnBase { Name = "BCOB32 (dangling)" }; context.BaseCollectionsOnBase.AddRange(bcob11, bcob12, bcob21, bcob31, bcob32); var dcob11 = new DerivedCollectionOnBase { Name = "DCOB11", NestedReference = nrd2, NestedCollection = new List <NestedCollectionBase> { ncd21 }, DerivedProperty = 1 }; var dcob12 = new DerivedCollectionOnBase { Name = "DCOB12", NestedReference = nrb3, NestedCollection = new List <NestedCollectionBase> { ncb31 }, DerivedProperty = 2 }; var dcob21 = new DerivedCollectionOnBase { Name = "DCOB21", DerivedProperty = 3 }; var dcob31 = new DerivedCollectionOnBase { Name = "DCOB31", NestedReference = nrd3, NestedCollection = new List <NestedCollectionBase> { ncd31, ncd32 }, DerivedProperty = 4 }; var dcob32 = new DerivedCollectionOnBase { Name = "DCOB32", DerivedProperty = 5 }; var dcob41 = new DerivedCollectionOnBase { Name = "DCOB41", DerivedProperty = 6 }; var dcob51 = new DerivedCollectionOnBase { Name = "DCOB51 (dangling)", NestedReference = nrd4, NestedCollection = new List <NestedCollectionBase> { ncd41, ncd42 }, DerivedProperty = 7 }; var dcob52 = new DerivedCollectionOnBase { Name = "DCOB52 (dangling)", DerivedProperty = 8 }; context.BaseCollectionsOnBase.AddRange(dcob11, dcob12, dcob21, dcob31, dcob32, dcob41, dcob51, dcob52); var cob11 = new CollectionOnBase { Name = "COB11" }; var cob12 = new CollectionOnBase { Name = "COB12" }; var cob21 = new CollectionOnBase { Name = "COB21" }; var cob31 = new CollectionOnBase { Name = "COB31" }; var cob32 = new CollectionOnBase { Name = "COB32" }; var cob33 = new CollectionOnBase { Name = "COB33" }; var cob41 = new CollectionOnBase { Name = "COB41" }; var cob51 = new CollectionOnBase { Name = "COB51 (dangling)" }; var cob52 = new CollectionOnBase { Name = "COB52 (dangling)" }; context.CollectionsOnBase.AddRange(cob11, cob12, cob21, cob31, cob32, cob33, cob41, cob51, cob52); var brod1 = new BaseReferenceOnDerived { Name = "BROD1" }; var brod2 = new BaseReferenceOnDerived { Name = "BROD2 (dangling)" }; var brod3 = new BaseReferenceOnDerived { Name = "BROD3 (dangling)" }; context.BaseReferencesOnDerived.AddRange(brod1, brod2, brod3); var drod1 = new DerivedReferenceOnDerived { Name = "DROD1" }; var drod2 = new DerivedReferenceOnDerived { Name = "DROD2" }; var drod3 = new DerivedReferenceOnDerived { Name = "DROD3 (dangling)" }; context.BaseReferencesOnDerived.AddRange(drod1, drod2, drod3); var rod1 = new ReferenceOnDerived { Name = "ROD1" }; var rod2 = new ReferenceOnDerived { Name = "ROD2" }; var rod3 = new ReferenceOnDerived { Name = "ROD3 (dangling)" }; context.ReferencesOnDerived.AddRange(rod1, rod2, rod3); var bcod11 = new BaseCollectionOnDerived { Name = "BCOD11" }; var bcod21 = new BaseCollectionOnDerived { Name = "BCOD21 (dangling)" }; var bcod22 = new BaseCollectionOnDerived { Name = "BCOD22 (dangling)" }; context.BaseCollectionsOnDerived.AddRange(bcod11, bcod21, bcod22); var dcod11 = new DerivedCollectionOnDerived { Name = "DCOD11" }; var dcod12 = new DerivedCollectionOnDerived { Name = "DCOD12" }; var dcod21 = new DerivedCollectionOnDerived { Name = "DCOD21" }; var dcod31 = new DerivedCollectionOnDerived { Name = "DCOD31 (dangling)" }; context.BaseCollectionsOnDerived.AddRange(dcod11, dcod12, dcod21, dcod31); var cod11 = new CollectionOnDerived { Name = "COD11" }; var cod21 = new CollectionOnDerived { Name = "COD21" }; var cod22 = new CollectionOnDerived { Name = "COD22" }; var cod31 = new CollectionOnDerived { Name = "COD31 (dangling)" }; context.CollectionsOnDerived.AddRange(cod11, cod21, cod22, cod31); var baseEntity1 = new BaseInheritanceRelationshipEntity { Name = "Base1", BaseReferenceOnBase = brob1, DerivedReferenceOnBase = drob1, ReferenceOnBase = rob1, BaseCollectionOnBase = new List <BaseCollectionOnBase> { bcob11 }, DerivedCollectionOnBase = new List <DerivedCollectionOnBase> { dcob11 }, CollectionOnBase = new List <CollectionOnBase> { cob11, cob12 } }; var baseEntity2 = new BaseInheritanceRelationshipEntity { Name = "Base2", BaseReferenceOnBase = drob2, ReferenceOnBase = rob2, CollectionOnBase = new List <CollectionOnBase> { cob21 } }; var baseEntity3 = new BaseInheritanceRelationshipEntity { Name = "Base3", DerivedReferenceOnBase = drob2, BaseCollectionOnBase = new List <BaseCollectionOnBase> { dcob21 }, DerivedCollectionOnBase = new List <DerivedCollectionOnBase> { dcob21 } }; context.BaseEntities.AddRange(baseEntity1, baseEntity2, baseEntity3); var derivedEntity1 = new DerivedInheritanceRelationshipEntity { Name = "Derived1(4)", BaseSelfRerefenceOnDerived = baseEntity1, BaseReferenceOnBase = drob1, DerivedReferenceOnBase = drob3, ReferenceOnBase = rob3, BaseCollectionOnBase = new List <BaseCollectionOnBase> { dcob11, dcob12 }, DerivedCollectionOnBase = new List <DerivedCollectionOnBase> { dcob31, dcob32 }, CollectionOnBase = new List <CollectionOnBase> { cob31, cob32 }, BaseReferenceOnDerived = brod1, DerivedReferenceOnDerived = drod1, ReferenceOnDerived = rod1, BaseCollectionOnDerived = new List <BaseCollectionOnDerived> { bcod11 }, DerivedCollectionOnDerived = new List <DerivedCollectionOnDerived> { dcod11, dcod12 }, CollectionOnDerived = new List <CollectionOnDerived> { cod11 } }; var derivedEntity2 = new DerivedInheritanceRelationshipEntity { Name = "Derived2(5)", BaseSelfRerefenceOnDerived = baseEntity2, ReferenceOnBase = rob4, BaseReferenceOnBase = brob2, CollectionOnBase = new List <CollectionOnBase> { cob41 }, BaseReferenceOnDerived = drod2, ReferenceOnDerived = rod2, CollectionOnDerived = new List <CollectionOnDerived> { cod21, cod22 } }; var derivedEntity3 = new DerivedInheritanceRelationshipEntity { Name = "Derived3(6)", BaseSelfRerefenceOnDerived = baseEntity3, DerivedReferenceOnBase = drob4, BaseCollectionOnBase = new List <BaseCollectionOnBase> { bcob21 }, DerivedCollectionOnBase = new List <DerivedCollectionOnBase> { dcob41 }, DerivedReferenceOnDerived = drod2, BaseCollectionOnDerived = new List <BaseCollectionOnDerived> { dcod11, dcod12 }, DerivedCollectionOnDerived = new List <DerivedCollectionOnDerived> { dcod21 } }; context.BaseEntities.AddRange(derivedEntity1, derivedEntity2, derivedEntity3); baseEntity1.DerivedSefReferenceOnBase = derivedEntity1; baseEntity2.DerivedSefReferenceOnBase = derivedEntity2; baseEntity3.DerivedSefReferenceOnBase = derivedEntity3; var principalEntity1 = new PrincipalEntity { Name = "PE1" }; var principalEntity2 = new PrincipalEntity { Name = "PE2" }; context.PrincipalEntities.AddRange(principalEntity1, principalEntity2); var referencedEntity1 = new ReferencedEntity { Name = "RE1", Principals = new List <PrincipalEntity> { principalEntity1 } }; var referencedEntity2 = new ReferencedEntity { Name = "RE2", Principals = new List <PrincipalEntity> { principalEntity2 } }; context.ReferencedEntities.AddRange(referencedEntity1, referencedEntity2); principalEntity2.Reference = referencedEntity1; principalEntity1.Reference = referencedEntity2; context.SaveChanges(); }