Update bluecopy

This commit is contained in:
skx 2020-10-22 18:23:17 +08:00
parent 61295f3487
commit 8d3a6f8d65
3 changed files with 28 additions and 12 deletions

View File

@ -31,7 +31,7 @@ namespace OrmTest
});
var insertObj = new Order() { Id = 1, Name = "order1",Price=0 };
var updateObjs = new List<Order> {
var insertObjs = new List<Order> {
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<Order> {
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 ####");
}
}

View File

@ -67,7 +67,6 @@
<Compile Include="Demo\DemoE_CodeFirst.cs" />
<Compile Include="Demo\DemoF_Utilities.cs" />
<Compile Include="Demo\DemoG_SimpleClient.cs" />
<Compile Include="Demo\student.cs" />
<Compile Include="Models\Custom.cs" />
<Compile Include="Models\EntityMapper.cs" />
<Compile Include="Models\Mapper.cs" />

View File

@ -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)
{