public class CircularReferenceNorthwind : Northwind {
public CircularReferenceNorthwind(string connectionString) :
	base(connectionString) { }

public override void SubmitChanges(ConflictMode failureMode) {
Dictionary<Employee, Employee> employeeReferences;
employeeReferences = new Dictionary<Employee, Employee>();

// odstrann a uloen odkazu na ostatn zamstnance
ChangeSet cs = this.GetChangeSet();
foreach (object entity in cs.Inserts) {
if (entity is Employee) {
Employee e = (Employee) entity;
employeeReferences.Add(e, e.Employee1);
e.Employee1 = null;
	}
}
// uloen zamstnanc bez odkaz na jin zamstnance
base.SubmitChanges(failureMode);

// obnoven odkaz na ostatn zamstnance
foreach (var item in employeeReferences) {
	item.Key.Employee1 = item.Value;
}

// aktualizace tabulky zamstnanc s odkazy na ostatn zamstnance 
base.SubmitChanges(failureMode);
}
}
