LLBLGen Pro version 5.4. Build 5.4.1
Create a new project and run the following chunk in the quickmodel editor.
Duck
Duck.Id guid *
Hog
Hog.Id guid *
DuckHog
DuckHog.Duck m1 Duck
DuckHog.Hog m1 Hog
You know, to keep track of all of the unholy duck / hog unions. (just a simple reproduceable example)
If the quickmodel editor window is closed, I can delete the newly created relationships from the project explorer.
However, if the quickmodel editor window is still open, I can delete one of the relationships but when I delete the second one, I get the following crash and the relationships become empty spaces in the project explorer and the designer goes into a sit and spin beachball scenario from which the only solution is to close and restart the app. Also, it asks to save when you quit, if you do that, it puts the project file in a state where it can not be loaded again due to an xml parsing error.
Thanks!
Timothy
Exception message:
Exception type: ArgumentException
SD.LLBLGen.Pro.Gui.Classes.Diagramming.RelationshipLink is not a link contained in graph SD.LLBLGen.Pro.Gui.Classes.Diagramming.ModelViewGroup
LLBLGen Pro version 5.4. Build 5.4.1
-----[Core exception]--------------------
at ILOG.Diagrammer.GraphLayout.GraphLayout.PerformNonRecursiveLayout(Boolean force, Boolean redraw)
at ILOG.Diagrammer.GraphLayout.RecursiveLayout.PerformLayout(Boolean force)
at ILOG.Diagrammer.GraphicContainer.PerformGraphLayout()
at SD.LLBLGen.Pro.Gui.Classes.Diagramming.ModelViewGroup.OnEntityGlyphBoundsChanged(Object sender, EventArgs e)
at SD.Tools.BCLExtensions.SystemRelated.EventExtensionMethods.RaiseEvent(EventHandler handler, Object sender)
at SD.LLBLGen.Pro.Gui.Controls.Diagramming.EntityGlyph.HandleFieldsListChanged(ListChangedEventArgs e)
at System.ComponentModel.ListChangedEventHandler.Invoke(Object sender, ListChangedEventArgs e)
at SD.Tools.Algorithmia.GeneralDataStructures.CommandifiedList1.NotifyChange(ListChangedType changeType, Int32 oldIndex, Int32 newIndex)
at SD.LLBLGen.Pro.ApplicationCore.EntityModel.FieldList
1.NotifyChange(ListChangedType changeType, Int32 oldIndex, Int32 newIndex)
at SD.Tools.Algorithmia.Commands.Command1.Do()
at SD.Tools.Algorithmia.Commands.CommandQueue.PerformDoRedoCommand(Boolean performRedo)
at SD.Tools.Algorithmia.Commands.CommandQueueManager.EnqueueAndRunCommand(CommandBase toEnqueueAndRun)
at System.Collections.ObjectModel.Collection
1.Remove(T item)
at System.EventHandler.Invoke(Object sender, EventArgs e)
at SD.Tools.BCLExtensions.SystemRelated.EventExtensionMethods.RaiseEvent(EventHandler handler, Object sender)
at SD.LLBLGen.Pro.ApplicationCore.EntityModel.FieldElement.MarkAsDereferencedFromFieldFieldRelationship()
at SD.LLBLGen.Pro.ApplicationCore.EntityModel.FieldRelationship.set_FkField(FieldElement value)
at SD.LLBLGen.Pro.ApplicationCore.EntityModel.FieldRelationship.MarkAsRemoved()
at System.EventHandler.Invoke(Object sender, EventArgs e)
at SD.Tools.BCLExtensions.SystemRelated.EventExtensionMethods.RaiseEvent(EventHandler handler, Object sender)
at SD.LLBLGen.Pro.ApplicationCore.EntityModel.EntityModelGraph.OnEdgeRemoved(RelationshipEdge edgeRemoved)
at SD.Tools.Algorithmia.UtilityClasses.GeneralUtils.PerformSyncedAction(Action toPerform, Object syncRoot, Boolean isSynchronized)
at SD.Tools.Algorithmia.Commands.Command1.Do()
at SD.Tools.Algorithmia.Commands.CommandQueue.PerformDoRedoCommand(Boolean performRedo)
at SD.Tools.Algorithmia.Commands.CommandQueueManager.EnqueueAndRunCommand(CommandBase toEnqueueAndRun)
at SD.Tools.Algorithmia.Graphs.GraphBase
2.PerformRemoveEdge(TEdge edgeToRemove)
at SD.Tools.Algorithmia.Commands.Command1.Do()
at SD.Tools.Algorithmia.Commands.CommandQueue.PerformDoRedoCommand(Boolean performRedo)
at SD.Tools.Algorithmia.Commands.CommandQueueManager.EnqueueAndRunCommand(CommandBase toEnqueueAndRun)
at System.EventHandler.Invoke(Object sender, EventArgs e)
at SD.Tools.BCLExtensions.SystemRelated.EventExtensionMethods.RaiseEvent(EventHandler handler, Object sender)
at SD.LLBLGen.Pro.ApplicationCore.EntityModel.EntityModelGraph.OnEdgeRemoved(RelationshipEdge edgeRemoved)
at SD.Tools.Algorithmia.UtilityClasses.GeneralUtils.PerformSyncedAction(Action toPerform, Object syncRoot, Boolean isSynchronized)
at SD.Tools.Algorithmia.Commands.Command
1.Do()
at SD.Tools.Algorithmia.Commands.CommandQueue.PerformDoRedoCommand(Boolean performRedo)
at SD.Tools.Algorithmia.Commands.CommandQueueManager.EnqueueAndRunCommand(CommandBase toEnqueueAndRun)
at SD.Tools.Algorithmia.Graphs.GraphBase2.PerformRemoveEdge(TEdge edgeToRemove)
at SD.Tools.Algorithmia.Commands.Command
1.Do()
at SD.Tools.Algorithmia.Commands.CommandQueue.PerformDoRedoCommand(Boolean performRedo)
at SD.Tools.Algorithmia.Commands.CommandQueueManager.EnqueueAndRunCommand(CommandBase toEnqueueAndRun)
at SD.LLBLGen.Pro.Gui.Classes.GuiController.<>c__DisplayClass112_0.<PerformRemoveElementsFromProject>b__24(RelationshipEdge r)
at SD.LLBLGen.Pro.Gui.Classes.GuiController.PerformElementsRemovalFromParentElement[TElement](Action1 removalFunc, ICollection
1 entries)
at SD.Tools.Algorithmia.Commands.Command1.Do()
at SD.Tools.Algorithmia.Commands.CommandQueue.PerformDoRedoCommand(Boolean performRedo)
at SD.Tools.Algorithmia.Commands.CommandQueueManager.EnqueueAndRunCommand(CommandBase toEnqueueAndRun)
at SD.LLBLGen.Pro.Gui.Classes.GuiController.PerformRemoveElementsFromProject(List
1 nodesOfElementsToRemove, TagEntry`1 parentEntry)
at SD.LLBLGen.Pro.Gui.Controls.ProjectExplorer._mainBarManager_ItemClick(Object sender, ItemClickEventArgs e)
at DevExpress.XtraBars.BarItem.OnClick(BarItemLink link)
at DevExpress.XtraBars.BarButtonItem.OnClick(BarItemLink link)
at DevExpress.XtraBars.ViewInfo.BarSelectionInfo.OnShortcutItemClick(BarItem item, BarShortcut shortcut)
at DevExpress.XtraBars.MessageFilter.BarManagerHook.PreFilterMessage(Message& m)
at DevExpress.XtraBars.MessageFilter.BarManagerMessageFilter.System.Windows.Forms.IMessageFilter.PreFilterMessage(Message& m)