diff --git a/Src/Asp.Net/SqlServerTest/Demo/Demo3_Insertable.cs b/Src/Asp.Net/SqlServerTest/Demo/Demo3_Insertable.cs index e366d0f3e..39ce49128 100644 --- a/Src/Asp.Net/SqlServerTest/Demo/Demo3_Insertable.cs +++ b/Src/Asp.Net/SqlServerTest/Demo/Demo3_Insertable.cs @@ -31,7 +31,7 @@ namespace OrmTest }); var insertObj = new Order() { Id = 1, Name = "order1",Price=0 }; - var updateObjs = new List { + var insertObjs = new List { new Order() { Id = 11, Name = "order11", Price=0 }, new Order() { Id = 12, Name = "order12" , Price=0} }; @@ -45,11 +45,17 @@ namespace OrmTest db.Insertable(insertObj).InsertColumns("Name", "Price").ExecuteReturnIdentity(); //ignore null columns - db.Insertable(updateObjs).ExecuteCommand();//get change row count + db.Insertable(insertObjs).ExecuteCommand();//get change row count //Use Lock db.Insertable(insertObj).With(SqlWith.UpdLock).ExecuteCommand(); + insertObjs = new List { + new Order() { Id = 11, Name = "order11", Price=1 }, + new Order() { Id = 12, Name = "order12" , Price=20, CreateTime=DateTime.Now, CustomId=1} + }; + db.Insertable(insertObjs).UseSqlServer().ExecuteBlueCopy(); + Console.WriteLine("#### Insertable End ####"); } } diff --git a/Src/Asp.Net/SqlServerTest/SqlServerTest.csproj b/Src/Asp.Net/SqlServerTest/SqlServerTest.csproj index a2f63face..5c6382bea 100644 --- a/Src/Asp.Net/SqlServerTest/SqlServerTest.csproj +++ b/Src/Asp.Net/SqlServerTest/SqlServerTest.csproj @@ -67,7 +67,6 @@ - diff --git a/Src/Asp.Net/SqlSugar/Realization/SqlServer/SqlBuilder/SqlServerBlueCopy.cs b/Src/Asp.Net/SqlSugar/Realization/SqlServer/SqlBuilder/SqlServerBlueCopy.cs index c2ad40a1e..84b3aa4ab 100644 --- a/Src/Asp.Net/SqlSugar/Realization/SqlServer/SqlBuilder/SqlServerBlueCopy.cs +++ b/Src/Asp.Net/SqlSugar/Realization/SqlServer/SqlBuilder/SqlServerBlueCopy.cs @@ -17,24 +17,35 @@ namespace SqlSugar public int ExecuteBlueCopy() { if (DbColumnInfoList==null||DbColumnInfoList.Count == 0) return 0; - DataTable dt = new DataTable(); - var columns = DbColumnInfoList.First().Select(it => it.DbColumnName ).ToList(); - foreach (var item in columns) - { - dt.Columns.Add(item); - } + + var dt= this.Context.Ado.GetDataTable("select top 0 * from " + InsertBuilder.GetTableNameString); foreach (var rowInfos in DbColumnInfoList) { var dr = dt.NewRow(); - foreach (var item in rowInfos.ToList()) + foreach (DataColumn item in dt.Columns) { - dr[item.DbColumnName] = item.Value; + var rows= rowInfos.ToList(); + var value = rows.FirstOrDefault(it => + it.DbColumnName.Equals(item.ColumnName, StringComparison.CurrentCultureIgnoreCase)|| + it.PropertyName.Equals(item.ColumnName, StringComparison.CurrentCultureIgnoreCase) + ); + if (value != null) + { + if (value.Value != null && UtilMethods.GetUnderType(value.Value.GetType()) == UtilConstants.DateType) + { + if (value.Value != null && value.Value.ToString() == DateTime.MinValue.ToString()) + { + value.Value = Convert.ToDateTime("1753/01/01"); + } + } + dr[item.ColumnName] = value.Value; + } } dt.Rows.Add(dr); } SqlBulkCopy bulkCopy = new SqlBulkCopy(this.Context.Ado.Connection as SqlConnection); //获取目标表的名称 - bulkCopy.DestinationTableName = InsertBuilder.EntityInfo.EntityName; + bulkCopy.DestinationTableName = InsertBuilder.GetTableNameString; //写入DataReader对象 if (this.Context.Ado.Connection.State == ConnectionState.Closed) {