I have this entity class which has a many-to-many relation with an implicit link table:
public class DiscountRule
{
public virtual ISet<CostType> ExcludedCostTypes { get; set; }
= new HashSet<CostType>();
}
await context.BulkInsertAsync(discountRules, options =>
{
options.IncludeGraph = true;
options.UnsafeMode = true;
});
await context.BulkInsertAsync(discountRules, options =>
{
options.IncludeGraph = true;
options.IncludeGraphOperationBuilder = operation =>
{
if (operation is BulkOperation<CostType>)
{
var bulk = (BulkOperation<CostType>) operation;
bulk.IsReadOnly = true;
}
};
options.UnsafeMode = true;
});
"internalexception": {
"message": "Exception has been thrown by the target of an invocation.",
"type": "System.Reflection.TargetInvocationException",
"stacktrace": " at System.RuntimeMethodHandle.InvokeMethod(Object target, Object[] arguments, Signature sig, Boolean constructor)\r\n at System.Reflection.RuntimeMethodInfo.UnsafeInvokeInternal(Object obj, Object[] parameters, Object[] arguments)\r\n at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)\r\n at Z.EntityFramework.Extensions.InternalBulkOperationManager.\u0001[\u0001](BulkOperation`1 \u0002, DbContext \u0003, List`1 \u0004, Boolean \u0005, List`1 \u0006, Type \u0007, String \b)\r\n at Z.EntityFramework.Extensions.InternalBulkOperationManager.\b.\u0001(SchemaEntityType )\r\n at System.Collections.Generic.List`1.ForEach(Action`1 action)\r\n at Z.EntityFramework.Extensions.InternalBulkOperationManager.\u0001[\u0001](DbContext \u0002, BulkOperation`1 \u0003, IEnumerable`1 \u0004, List`1 \u0005)\r\n at Z.EntityFramework.Extensions.InternalBulkOperationManager.\u0001[\u0001](BulkOperation`1 \u0002, DbContext \u0003, IEnumerable`1 \u0004, List`1 \u0005)\r\n at DbContextExtensions.\u0001[\u0001](DbContext , IEnumerable`1 , Action`1 , List`1 )\r\n at Z.EntityFramework.Extensions.BulkSaveChanges.\u0001(DbContext , List`1 , List`1 , Action`1 )\r\n at DbContextExtensions.\u0001(DbContext , Boolean , Action`1 , Boolean )",
"internalexception": {
"message": "Incorrect syntax near ';'.",
"type": "System.Data.SqlClient.SqlException",
"stacktrace": " at System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 wrapCloseInAction)\r\n at System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 wrapCloseInAction)\r\n at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj, Boolean callerHasConnectionLock, Boolean asyncClose)\r\n at System.Data.SqlClient.TdsParser.TryRun(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj, Boolean& dataReady)\r\n at System.Data.SqlClient.SqlDataReader.TryConsumeMetaData()\r\n at System.Data.SqlClient.SqlDataReader.get_MetaData()\r\n at System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString, Boolean isInternal, Boolean forDescribeParameterEncryption, Boolean shouldCacheForAlwaysEncrypted)\r\n at System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean async, Int32 timeout, Task& task, Boolean asyncWrite, Boolean inRetry, SqlDataReader ds, Boolean describeParameterEncryptionRequest)\r\n at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method, TaskCompletionSource`1 completion, Int32 timeout, Task& task, Boolean& usedCache, Boolean asyncWrite, Boolean inRetry)\r\n at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method)\r\n at System.Data.SqlClient.SqlCommand.ExecuteReader(CommandBehavior behavior, String method)\r\n at System.Data.SqlClient.SqlCommand.ExecuteDbDataReader(CommandBehavior behavior)\r\n at System.Data.Common.DbCommand.System.Data.IDbCommand.ExecuteReader(CommandBehavior behavior)\r\n at System.Data.Common.DbDataAdapter.FillInternal(DataSet dataset, DataTable[] datatables, Int32 startRecord, Int32 maxRecords, String srcTable, IDbCommand command, CommandBehavior behavior)\r\n at System.Data.Common.DbDataAdapter.Fill(DataSet dataSet, Int32 startRecord, Int32 maxRecords, String srcTable, IDbCommand command, CommandBehavior behavior)\r\n at System.Data.Common.DbDataAdapter.Fill(DataSet dataSet)\r\n at Z.BulkOperations.SqlActionExecutor.\u0001(SqlCommand \u0002, BulkOperation \u0003, Int32 \u0004)\r\n at Z.BulkOperations.SqlActionExecutor.\u0001(DbCommand \u0002, BulkOperation \u0003, Int32 \u0004)\r\n at Z.BulkOperations.SqlActionExecutor.\u0006(ExecuteAction , DbCommand )\r\n at Z.BulkOperations.DbActionExecutor.\u0001(List`1 )\r\n at Z.BulkOperations.SqlProvider.\u0001(List`1 )\r\n at \u0007.\u0003.\u0001(BulkOperation )\r\n at Z.BulkOperations.BulkOperation.BulkInsert()\r\n at Z.EntityFramework.Extensions.InternalBulkOperationManager.\u0001[\u0001](BulkOperation`1 \u0002, DbContext \u0003, List`1 \u0004, Boolean \u0005, List`1 \u0006, Type \u0007, String \b)\r\n at Z.EntityFramework.Extensions.PublicInternalBulkOperationManager.BulkInsertCast[T](BulkOperation`1 this, DbContext context, List`1 list, Boolean isManager, List`1 entitiesToUpdate, Type type, String typeName)"
}
}
Which I don't know what to do with.