Your repro case doesn't contain any data, so I've to rewrite your app in a console app in C# to be able to check the ObjectID's in the entity instances, to see if this works. The VB.NET debugger is not advanced enough to let me peek into elements in the graph at runtime...
Using C#,
aCopyFS.ExecutionDependencies[0].DependsOnReportTable.ExecutionDependencies[ 0].DependsOnReportTable
is null which is even worse than you suggested. (latest runtime).
(I;ve renamed everything as:
var a = new ReportTableEntity() { Name = "a", Id=1 };
var b = new ReportTableEntity() { Name = "b", Id=2 };
var c = new ReportTableEntity() { Name = "c", Id=3 };
var ab = new ReportTableExecutionDependencyEntity() {Table = a, DependsOnReportTable = b};
var bc = new ReportTableExecutionDependencyEntity() {Table = b, DependsOnReportTable = c};
var ca = new ReportTableExecutionDependencyEntity() {Table = c, DependsOnReportTable = a};
It's cumbersome to try to find it, also because you didn't include the .lgp file so I can't regenerate the code in a different language, or using the latest templates. Anyway, I'll see if I can find why the elements aren't restored properly. I also can't see if you have hidden some relations, which is crucial here I think, if a relation is hidden on one side, it won't give proper results.
I do want to know from you if you have tried this with real data, as the objects are now all empty.
(edit) the deserialization of bc goes wrong, the reference to 'c' is null.
(edit) for some silly reason, all entities are in the list of entities to serialize except bc...
(edit) I think the optimization somewhere is a bit too optimistic. It ignores 'bc' as it thinks it's not referenced by anything else. I'll contact simon about this.
The problem is that it traverses the graph, and it does it in the order: A, AB, CA, B, C, BC. The thing is: when 'bc' is seen as a related entity of 'b' it is first placed in a queue of unreferenced entities, the idea I think is that if it's referenced by an entity it will be included anyway. The problem is that those referencing entities have already been processed (b and c) so it's ignored. I've to consult with Simon if it can be added regardless, or if it has to be threated differently.
In the meantime, use normal serialization for this particular graph.