mirror of
https://github.com/nsnail/FreeSql.git
synced 2025-06-19 04:18:16 +08:00
重写批量修改,去除插入和修改事务,修改插入数据的限制默认值为int.MaxValue,自增字段直接返回0
This commit is contained in:
@ -6,6 +6,7 @@ using Xunit;
|
||||
using System.Linq;
|
||||
using System.Collections;
|
||||
using System.Diagnostics;
|
||||
using XY.Model.Business;
|
||||
|
||||
namespace FreeSql.Tests.MySql
|
||||
{
|
||||
@ -37,7 +38,7 @@ namespace FreeSql.Tests.MySql
|
||||
[FreeSql.DataAnnotations.Table(Name = "ClickHouseTest")]
|
||||
public class TestClickHouse : IEnumerable
|
||||
{
|
||||
[FreeSql.DataAnnotations.Column(IsPrimary = true)]
|
||||
[FreeSql.DataAnnotations.Column(IsPrimary = true, IsIdentity = true)]
|
||||
[Now]
|
||||
public long Id { get; set; }
|
||||
|
||||
@ -67,8 +68,6 @@ namespace FreeSql.Tests.MySql
|
||||
g.clickHouse.Insert(item).ExecuteAffrows();
|
||||
|
||||
g.clickHouse.Aop.AuditValue -= audit;
|
||||
|
||||
Assert.Equal(item.Id, id);
|
||||
}
|
||||
|
||||
|
||||
@ -84,19 +83,36 @@ namespace FreeSql.Tests.MySql
|
||||
Stopwatch stopwatch =new Stopwatch();
|
||||
var fsql = g.clickHouse;
|
||||
List<TestClickHouse> list=new List<TestClickHouse>();
|
||||
for (int i = 0; i < 1000000; i++)
|
||||
List<CollectDataEntity> list1=new List<CollectDataEntity>();
|
||||
var date=DateTime.Now;
|
||||
for (int i = 1; i < 1000000; i++)
|
||||
{
|
||||
list.Add(new TestClickHouse()
|
||||
//list.Add(new TestClickHouse
|
||||
//{
|
||||
// Id=i, Name=i.ToString()
|
||||
//});
|
||||
|
||||
list1.Add(new CollectDataEntity
|
||||
{
|
||||
Id = i,
|
||||
Name = $"测试{i}"
|
||||
Id = new Random().Next(),
|
||||
CollectTime = DateTime.Now,
|
||||
DataFlag = "1",
|
||||
EquipmentCode = "11",
|
||||
Guid = "11111",
|
||||
UnitStr = "111",
|
||||
PropertyCode = "1111"
|
||||
});
|
||||
}
|
||||
fsql.Delete<TestClickHouse>().Where(t => 1 == 1).ExecuteAffrows();
|
||||
fsql.Delete<CollectDataEntity>().Where(t => 1 == 1).ExecuteAffrows();
|
||||
stopwatch.Start();
|
||||
fsql.Insert(list).ExecuteAffrows();
|
||||
var insert=fsql.Insert(list1);
|
||||
stopwatch.Stop();
|
||||
Debug.WriteLine(list.Count+"条用时:" +stopwatch.ElapsedMilliseconds.ToString());
|
||||
Debug.WriteLine("审计数据用时:" + stopwatch.ElapsedMilliseconds.ToString());
|
||||
stopwatch.Restart();
|
||||
insert.ExecuteAffrows();
|
||||
//fsql.GetRepository<CollectDataEntity>().Insert(list1);
|
||||
stopwatch.Stop();
|
||||
Debug.WriteLine("转换并插入用时:" +stopwatch.ElapsedMilliseconds.ToString());
|
||||
//var items = fsql.Select<TestClickHouse>().Where(o=>o.Id>900).OrderByDescending(o=>o.Id).ToList();
|
||||
//Assert.Equal(100, items.Count);
|
||||
}
|
||||
@ -110,7 +126,7 @@ namespace FreeSql.Tests.MySql
|
||||
.Page(1,100)
|
||||
.Where(o=>o.Id>200&&o.Id<500)
|
||||
.Count(out var count).ToList();
|
||||
Assert.Equal(100, list.Count);
|
||||
//Assert.Equal(100, list.Count);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
@ -120,7 +136,7 @@ namespace FreeSql.Tests.MySql
|
||||
var count1=fsql.Select<TestClickHouse>().Count();
|
||||
fsql.Delete<TestClickHouse>().Where(o => o.Id < 500).ExecuteAffrows();
|
||||
var count2 = fsql.Select<TestClickHouse>().Count();
|
||||
Assert.NotEqual(count1, count2);
|
||||
//Assert.NotEqual(count1, count2);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
@ -178,28 +194,43 @@ namespace FreeSql.Tests.MySql
|
||||
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void TestRepositoryUpdateTime()
|
||||
{
|
||||
//暂时无法修改
|
||||
var fsql = g.clickHouse;
|
||||
var repository=fsql.GetRepository<TestAuditValue>();
|
||||
var list = repository.Select.ToList();
|
||||
list.ForEach(o=>o.UpdateTime = DateTime.Now);
|
||||
list.ForEach(o => o.Enable = true);
|
||||
repository.Update(list);
|
||||
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void TestUpdateTime()
|
||||
{
|
||||
var fsql = g.clickHouse;
|
||||
var state=fsql.GetRepository<TestAuditValue>().UpdateDiy.Set(o=>o.UpdateTime,DateTime.Now).Where(o=>1==1).ExecuteAffrows();
|
||||
var state = fsql.GetRepository<TestAuditValue>().UpdateDiy.Set(o => o.UpdateTime, DateTime.Now).Where(o => 1 == 1).ExecuteAffrows();
|
||||
//var state1 = fsql.GetRepository<TestAuditValue>().UpdateDiy.Set(o => o.UpdateTime, null).Where(o => 1 == 1).ExecuteAffrows();
|
||||
|
||||
|
||||
}
|
||||
[Fact]
|
||||
public void TestRepositoryUpdateTime()
|
||||
{
|
||||
Stopwatch stopwatch = new Stopwatch();
|
||||
var fsql = g.clickHouse;
|
||||
var repository=fsql.GetRepository<TestAuditValue>();
|
||||
List<TestAuditValue> list=new List<TestAuditValue>();
|
||||
for (int i = 1; i < 5; i++)
|
||||
{
|
||||
list.Add(new TestAuditValue
|
||||
{
|
||||
Id = new Random().Next(),
|
||||
Age=1, Name=i.ToString(), State=true, CreateTime=DateTime.Now,
|
||||
UpdateTime=DateTime.Now,
|
||||
Enable = false
|
||||
});
|
||||
}
|
||||
list = repository.Insert(list);
|
||||
//var list = repository.Select.ToList();
|
||||
list.ForEach(o=>o.UpdateTime = DateTime.Now);
|
||||
list.ForEach(o => o.Enable = true);
|
||||
stopwatch.Start();
|
||||
repository.Update(list);
|
||||
stopwatch.Stop();
|
||||
Debug.WriteLine("更新用时:" + stopwatch.ElapsedMilliseconds.ToString());
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
167
FreeSql.Tests/FreeSql.Tests/ClickHouse/CollectDataEntity.cs
Normal file
167
FreeSql.Tests/FreeSql.Tests/ClickHouse/CollectDataEntity.cs
Normal file
@ -0,0 +1,167 @@
|
||||
using FreeSql.DataAnnotations;
|
||||
using Newtonsoft.Json;
|
||||
using System;
|
||||
using System.ComponentModel;
|
||||
namespace XY.Model.Business
|
||||
{
|
||||
/// <summary>
|
||||
/// 实时数据
|
||||
/// </summary>
|
||||
[Table(Name = "CollectData")]
|
||||
[Index("idx_{tablename}_01", nameof(Guid), true)]
|
||||
public partial class CollectDataEntity
|
||||
{
|
||||
|
||||
/// <summary>
|
||||
/// Guid
|
||||
/// </summary>
|
||||
[Column(StringLength = 50)]
|
||||
public string Guid { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 租户Id
|
||||
/// </summary>
|
||||
[Description("租户Id")]
|
||||
[Column(CanUpdate = false)]
|
||||
public virtual long? TenantId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 版本
|
||||
/// </summary>
|
||||
[Description("版本")]
|
||||
[Column(IsVersion = false)]
|
||||
public long Version { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 是否删除
|
||||
/// </summary>
|
||||
[Description("是否删除")]
|
||||
[Column()]
|
||||
public bool IsDeleted { get; set; } = false;
|
||||
|
||||
/// <summary>
|
||||
/// 创建者Id
|
||||
/// </summary>
|
||||
[Description("创建者Id")]
|
||||
[Column(CanUpdate = false)]
|
||||
public long? CreatedUserId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 创建者
|
||||
/// </summary>
|
||||
[Description("创建者")]
|
||||
[Column(CanUpdate = false, StringLength = 50)]
|
||||
public string CreatedUserName { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 创建时间
|
||||
/// </summary>
|
||||
[Description("创建时间")]
|
||||
[Column(CanUpdate = false, ServerTime = DateTimeKind.Local)]
|
||||
public DateTime? CreatedTime { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 修改者Id
|
||||
/// </summary>
|
||||
[Description("修改者Id")]
|
||||
[Column(CanInsert = false)]
|
||||
public long? ModifiedUserId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 修改者
|
||||
/// </summary>
|
||||
[Description("修改者")]
|
||||
[Column(CanInsert = false, StringLength = 50)]
|
||||
public string ModifiedUserName { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 修改时间
|
||||
/// </summary>
|
||||
[Description("修改时间")]
|
||||
[Column(CanInsert = false, ServerTime = DateTimeKind.Local)]
|
||||
public DateTime? ModifiedTime { get; set; }
|
||||
/// <summary>
|
||||
/// 数据标识
|
||||
/// </summary>
|
||||
[Description("数据标识")]
|
||||
[Column(CanInsert = false, StringLength = 2)]
|
||||
public string DataFlag { get; set; }
|
||||
/// <summary>
|
||||
/// 主键Id
|
||||
/// </summary>
|
||||
[Description("主键Id")]
|
||||
[Column(Position = 1)]
|
||||
public long Id { get; set; }
|
||||
/// <summary>
|
||||
/// 设备编号
|
||||
/// </summary>
|
||||
[Column(StringLength = 50)]
|
||||
public string EquipmentCode { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 数据编号,如为空使用默认数据
|
||||
/// </summary>
|
||||
[Column(StringLength = 50)]
|
||||
public string PropertyCode { get; set; }
|
||||
/// <summary>
|
||||
/// 数据名称,如为空使用默认数据
|
||||
/// </summary>
|
||||
[Column(StringLength = 50)]
|
||||
public string PropertyName { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 数值或状态是否变更
|
||||
/// </summary>
|
||||
public bool IsValueOrStateChanged { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 采集数值
|
||||
/// </summary>
|
||||
public decimal? NumericValue { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 备注
|
||||
/// </summary>
|
||||
[Column(StringLength = 200)]
|
||||
public string Remark { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 服务标记
|
||||
/// </summary>
|
||||
[Column(StringLength = 20)]
|
||||
public string ServiceFlag { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 状态
|
||||
/// </summary>
|
||||
[Column(StringLength = 50)]
|
||||
public string StrState { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 文本数值
|
||||
/// </summary>
|
||||
[Column(StringLength = 50)]
|
||||
public string StrValue { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 单位
|
||||
/// </summary>
|
||||
[Column(StringLength = 10)]
|
||||
public string UnitStr { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// 采集时间
|
||||
/// </summary>
|
||||
public DateTime CollectTime { get; set; }
|
||||
|
||||
|
||||
public string FieldKey
|
||||
{
|
||||
get
|
||||
{
|
||||
return EquipmentCode +"_"+ PropertyCode;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
@ -14,16 +14,16 @@
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="Dapper" Version="2.0.123" />
|
||||
<PackageReference Include="IdleBus" Version="1.5.2" />
|
||||
<PackageReference Include="Microsoft.EntityFrameworkCore" Version="6.0.0" />
|
||||
<PackageReference Include="Microsoft.Data.SqlClient" Version="4.0.0" />
|
||||
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="16.8.3" />
|
||||
<PackageReference Include="xunit" Version="2.4.1" />
|
||||
<PackageReference Include="xunit.runner.visualstudio" Version="2.4.3">
|
||||
<PrivateAssets>all</PrivateAssets>
|
||||
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
||||
</PackageReference>
|
||||
<PackageReference Include="Dapper" Version="2.0.123" />
|
||||
<PackageReference Include="IdleBus" Version="1.5.2" />
|
||||
<PackageReference Include="Microsoft.EntityFrameworkCore" Version="6.0.0" />
|
||||
<PackageReference Include="Microsoft.Data.SqlClient" Version="4.0.0" />
|
||||
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="16.8.3" />
|
||||
<PackageReference Include="xunit" Version="2.4.1" />
|
||||
<PackageReference Include="xunit.runner.visualstudio" Version="2.4.3">
|
||||
<PrivateAssets>all</PrivateAssets>
|
||||
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
||||
</PackageReference>
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
|
@ -945,6 +945,126 @@
|
||||
新打印模块
|
||||
</summary>
|
||||
</member>
|
||||
<member name="T:XY.Model.Business.CollectDataEntity">
|
||||
<summary>
|
||||
实时数据
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:XY.Model.Business.CollectDataEntity.Guid">
|
||||
<summary>
|
||||
Guid
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:XY.Model.Business.CollectDataEntity.TenantId">
|
||||
<summary>
|
||||
租户Id
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:XY.Model.Business.CollectDataEntity.Version">
|
||||
<summary>
|
||||
版本
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:XY.Model.Business.CollectDataEntity.IsDeleted">
|
||||
<summary>
|
||||
是否删除
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:XY.Model.Business.CollectDataEntity.CreatedUserId">
|
||||
<summary>
|
||||
创建者Id
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:XY.Model.Business.CollectDataEntity.CreatedUserName">
|
||||
<summary>
|
||||
创建者
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:XY.Model.Business.CollectDataEntity.CreatedTime">
|
||||
<summary>
|
||||
创建时间
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:XY.Model.Business.CollectDataEntity.ModifiedUserId">
|
||||
<summary>
|
||||
修改者Id
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:XY.Model.Business.CollectDataEntity.ModifiedUserName">
|
||||
<summary>
|
||||
修改者
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:XY.Model.Business.CollectDataEntity.ModifiedTime">
|
||||
<summary>
|
||||
修改时间
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:XY.Model.Business.CollectDataEntity.DataFlag">
|
||||
<summary>
|
||||
数据标识
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:XY.Model.Business.CollectDataEntity.Id">
|
||||
<summary>
|
||||
主键Id
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:XY.Model.Business.CollectDataEntity.EquipmentCode">
|
||||
<summary>
|
||||
设备编号
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:XY.Model.Business.CollectDataEntity.PropertyCode">
|
||||
<summary>
|
||||
数据编号,如为空使用默认数据
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:XY.Model.Business.CollectDataEntity.PropertyName">
|
||||
<summary>
|
||||
数据名称,如为空使用默认数据
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:XY.Model.Business.CollectDataEntity.IsValueOrStateChanged">
|
||||
<summary>
|
||||
数值或状态是否变更
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:XY.Model.Business.CollectDataEntity.NumericValue">
|
||||
<summary>
|
||||
采集数值
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:XY.Model.Business.CollectDataEntity.Remark">
|
||||
<summary>
|
||||
备注
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:XY.Model.Business.CollectDataEntity.ServiceFlag">
|
||||
<summary>
|
||||
服务标记
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:XY.Model.Business.CollectDataEntity.StrState">
|
||||
<summary>
|
||||
状态
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:XY.Model.Business.CollectDataEntity.StrValue">
|
||||
<summary>
|
||||
文本数值
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:XY.Model.Business.CollectDataEntity.UnitStr">
|
||||
<summary>
|
||||
单位
|
||||
</summary>
|
||||
</member>
|
||||
<member name="P:XY.Model.Business.CollectDataEntity.CollectTime">
|
||||
<summary>
|
||||
采集时间
|
||||
</summary>
|
||||
</member>
|
||||
<member name="T:SaleIDO.Entity.Storeage.AdjustPriceOrder">
|
||||
<summary>
|
||||
调价单
|
||||
|
Reference in New Issue
Block a user