Starting with a clean database, and working the suggestions one by one, the load fails on missing a lookup value. Dump at bottom.
When I comment out all the foreign keys, the data loads in its entirety and all is grand.
So it leads me back to my original thought: a row is being inserted into the link table ListValueProperties before its associated value has been committed to the lookup table ListValues.
I would guess that this is working from a purely human-transaction basis and not from the perspective of initializing a database. Human behavior, being controlled by you interface, forces the user to add list values and property values before they are assigned to work items. But when initializing the database, the system will need to load things in a given order: list and property values first, then work items, then the link tables, then the time slices.
-- Exception: I was unable to create or update the "Support" list value (7e9446ca-59a8-42bd-8e55-50c5f09921d2) of an unknown property (d740803b-dc65-4d4b-89cd-fa1cc0994428)
at async Task Submission#0+SqlServerTransactor.ApplyChangesToSqlAsync(ChangeSet changes)
at async Task Submission#0+SqlServerTransactor.ConnectToSqlServerAsync(string connectionString)
at async Task Submission#0+SqlServerTransactor.ConnectToSqlServerAsync(string connectionString)
at void Submission#0+<<<Initialize>>b__0_1>d.MoveNext()
SqlException: The INSERT statement conflicted with the FOREIGN KEY constraint "FK_ListValues_ListValueProperties". The conflict occurred in database "Grindstone_02", table "dbo.ListValueProperties", column 'Id'.
The statement has been terminated.
at void System.Data.SqlClient.SqlConnection.OnError(SqlException exception, bool breakConnection, Action<Action> wrapCloseInAction)
at void System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, bool breakConnection, Action<Action> wrapCloseInAction)
at void System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj, bool callerHasConnectionLock, bool asyncClose)
at bool System.Data.SqlClient.TdsParser.TryRun(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj, out bool dataReady)
at void System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior, string resetOptionsString, bool isInternal, bool forDescribeParameterEncryption, bool shouldCacheForAlwaysEncrypted)
at SqlDataReader System.Data.SqlClient.SqlCommand.CompleteAsyncExecuteReader(bool isInternal, bool forDescribeParameterEncryption)
at object System.Data.SqlClient.SqlCommand.InternalEndExecuteNonQuery(IAsyncResult asyncResult, string endMethod, bool isInternal)
at int System.Data.SqlClient.SqlCommand.EndExecuteNonQueryInternal(IAsyncResult asyncResult)
at int System.Data.SqlClient.SqlCommand.EndExecuteNonQueryAsync(IAsyncResult asyncResult)
at void System.Threading.Tasks.TaskFactory<TResult>.FromAsyncCoreLogic(IAsyncResult iar, Func<IAsyncResult, TResult> endFunction, Action<IAsyncResult> endAction, Task<TResult> promise, bool requiresSynchronization)
at async Task Submission#0+SqlServerTransactor.ApplyChangesToSqlAsync(ChangeSet changes)