Skip to content

Commit f897aa0

Browse files
2881028810
authored andcommitted
v1.7.1(兼容问题 Microsoft.Data.SqliClient) #394 #384 #330 #115 #17
1 parent fee937a commit f897aa0

File tree

25 files changed

+142
-167
lines changed

25 files changed

+142
-167
lines changed

Extensions/FreeSql.Extensions.BaseEntity/FreeSql.Extensions.BaseEntity.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
<PropertyGroup>
44
<TargetFrameworks>netstandard2.0;net45;net40</TargetFrameworks>
5-
<Version>1.7.0</Version>
5+
<Version>1.7.1</Version>
66
<GeneratePackageOnBuild>true</GeneratePackageOnBuild>
77
<Authors>ncc;YeXiangQin</Authors>
88
<Description>BaseEntity 是一种极简单的 CodeFirst 开发方式,特别对单表或多表CRUD,利用继承节省了每个实体类的重复属性(创建时间、ID等字段),软件删除等功能,进行 crud 操作时不必时常考虑仓储的使用.</Description>

Extensions/FreeSql.Extensions.JsonMap/FreeSql.Extensions.JsonMap.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
<PropertyGroup>
44
<TargetFrameworks>netstandard2.0;net45;net40</TargetFrameworks>
5-
<Version>1.7.0</Version>
5+
<Version>1.7.1</Version>
66
<GeneratePackageOnBuild>true</GeneratePackageOnBuild>
77
<Authors>ncc;YeXiangQin</Authors>
88
<Description>FreeSql 扩展包,可实现实体类属性为对象时,以JSON形式映射存储.</Description>

Extensions/FreeSql.Extensions.LazyLoading/FreeSql.Extensions.LazyLoading.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
<PropertyGroup>
44
<TargetFrameworks>netstandard2.0;netstandard2.1;net45;net40</TargetFrameworks>
5-
<Version>1.7.0</Version>
5+
<Version>1.7.1</Version>
66
<GeneratePackageOnBuild>true</GeneratePackageOnBuild>
77
<Authors>ncc;YeXiangQin</Authors>
88
<Description>FreeSql 扩展包,可实现【延时加载】属性.</Description>

Extensions/FreeSql.Extensions.Linq/FreeSql.Extensions.Linq.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
<PropertyGroup>
44
<TargetFrameworks>netstandard2.0;net45;net40</TargetFrameworks>
5-
<Version>1.7.0</Version>
5+
<Version>1.7.1</Version>
66
<GeneratePackageOnBuild>true</GeneratePackageOnBuild>
77
<Authors>ncc;YeXiangQin</Authors>
88
<Description>FreeSql 扩展包,实现 linq queryable 和 linq to sql 语法进行开发.</Description>

Extensions/FreeSql.Generator/FreeSql.Generator.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
<Description>使用 FreeSql 快速生成数据库的实体类,安装:dotnet tool install -g FreeSql.Generator</Description>
1313
<PackageProjectUrl>https://github.com/2881099/FreeSql</PackageProjectUrl>
1414
<RepositoryUrl>https://github.com/2881099/FreeSql</RepositoryUrl>
15-
<Version>1.7.0</Version>
15+
<Version>1.7.1</Version>
1616
<PackageTags>FreeSql DbFirst 实体生成器</PackageTags>
1717
</PropertyGroup>
1818

FreeSql.All/FreeSql.All.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
<PropertyGroup>
44
<TargetFrameworks>netstandard2.0;net45;net40</TargetFrameworks>
5-
<Version>1.7.0</Version>
5+
<Version>1.7.1</Version>
66
<GeneratePackageOnBuild>true</GeneratePackageOnBuild>
77
<Authors>ncc;YeXiangQin</Authors>
88
<Description>FreeSql 全家桶,懒人专用</Description>

FreeSql.DbContext/DbSet/DbSet.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,8 @@ public void Dispose()
4747
{
4848
this._dicUpdateTimes.Clear();
4949
this._states.Clear();
50+
this._statesEditing.Clear();
51+
this._dataEditing = null;
5052
}
5153
finally
5254
{
@@ -123,7 +125,6 @@ internal void TrackToList(object list)
123125
public ISelect<TEntity> WhereIf(bool condition, Expression<Func<TEntity, bool>> exp) => this.OrmSelect(null).WhereIf(condition, exp);
124126

125127
protected ConcurrentDictionary<string, EntityState> _states = new ConcurrentDictionary<string, EntityState>();
126-
internal ConcurrentDictionary<string, EntityState> _statesInternal => _states;
127128
TableInfo _tablePriv;
128129
protected TableInfo _table => _tablePriv ?? (_tablePriv = _db.OrmOriginal.CodeFirst.GetTableByEntity(_entityType));
129130
ColumnInfo[] _tableIdentitysPriv, _tableServerTimesPriv;

FreeSql.DbContext/DbSet/DbSetSync.cs

Lines changed: 86 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -530,5 +530,91 @@ public void AddOrUpdate(TEntity data)
530530
}
531531
}
532532
#endregion
533+
534+
#region BeginEdit
535+
protected List<TEntity> _dataEditing;
536+
protected ConcurrentDictionary<string, EntityState> _statesEditing = new ConcurrentDictionary<string, EntityState>();
537+
538+
/// <summary>
539+
/// 开始编辑数据,然后调用方法 EndEdit 分析出添加、修改、删除 SQL 语句进行执行<para></para>
540+
/// 场景:winform 加载表数据后,一顿添加、修改、删除操作之后,最后才点击【保存】<para></para><para></para>
541+
/// 示例:https://github.com/dotnetcore/FreeSql/issues/397<para></para>
542+
/// </summary>
543+
/// <param name="data"></param>
544+
//public void BeginEdit(List<TEntity> data)
545+
//{
546+
// if (data == null || data.Any() == false) return;
547+
// if (_table.Primarys.Any() == false) throw new Exception($"不可进行编辑,实体没有主键:{_db.OrmOriginal.GetEntityString(_entityType, data.First())}");
548+
// _statesEditing.Clear();
549+
// _dataEditing = data;
550+
// foreach (var item in data)
551+
// {
552+
// var key = _db.OrmOriginal.GetEntityKeyString(_entityType, item, false);
553+
// if (string.IsNullOrEmpty(key)) continue;
554+
555+
// _statesEditing.AddOrUpdate(key, k => CreateEntityState(item), (k, ov) =>
556+
// {
557+
// _db.OrmOriginal.MapEntityValue(_entityType, item, ov.Value);
558+
// ov.Time = DateTime.Now;
559+
// return ov;
560+
// });
561+
// }
562+
//}
563+
///// <summary>
564+
///// 完成编辑数据,进行保存动作<para></para>
565+
///// 该方法根据 BeginEdit 传入的状态分析出添加、修改、删除 SQL 语句
566+
///// </summary>
567+
///// <returns></returns>
568+
//public int EndEdit()
569+
//{
570+
// var beforeAffrows = 0;
571+
// if (_dataEditing == null) return 0;
572+
// var oldEnable = _db.Options.EnableAddOrUpdateNavigateList;
573+
// _db.Options.EnableAddOrUpdateNavigateList = false;
574+
// try
575+
// {
576+
// DbContextFlushCommand();
577+
// var addList = new List<TEntity>();
578+
// var ediList = new List<TEntity>();
579+
// foreach (var item in _dataEditing)
580+
// {
581+
// var key = _db.OrmOriginal.GetEntityKeyString(_entityType, item, false);
582+
// if (_statesEditing.TryRemove(key, out var state) == false)
583+
// {
584+
// addList.Add(item);
585+
// continue;
586+
// }
587+
// _states.AddOrUpdate(key, k => state, (k, ov) =>
588+
// {
589+
// ov.Value = state.Value;
590+
// ov.Time = DateTime.Now;
591+
// return ov;
592+
// });
593+
// if (_db.OrmOriginal.CompareEntityValueReturnColumns(_entityType, item, state.Value, false).Any())
594+
// ediList.Add(item);
595+
// }
596+
// beforeAffrows = _db._affrows;
597+
// AddRange(addList);
598+
// UpdateRange(ediList);
599+
600+
// DbContextFlushCommand();
601+
// var delList = _statesEditing.Values.OrderBy(a => a.Time).ToArray();
602+
// _db._affrows += DbContextBatchRemove(delList); //为了减的少不必要的开销,此处没有直接调用 RemoveRange
603+
// foreach (var state in delList)
604+
// {
605+
// _db.OrmOriginal.ClearEntityPrimaryValueWithIdentityAndGuid(_entityType, state.Value);
606+
// _states.TryRemove(state.Key, out var oldstate);
607+
// }
608+
// DbContextFlushCommand();
609+
// }
610+
// finally
611+
// {
612+
// _dataEditing = null;
613+
// _statesEditing.Clear();
614+
// _db.Options.EnableAddOrUpdateNavigateList = oldEnable;
615+
// }
616+
// return _db._affrows - beforeAffrows;
617+
//}
618+
#endregion
533619
}
534620
}

FreeSql.DbContext/FreeSql.DbContext.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
<PropertyGroup>
44
<TargetFrameworks>netstandard2.0;netcoreapp31;netcoreapp30;netcoreapp22;netcoreapp21;net45;net40</TargetFrameworks>
5-
<Version>1.7.0</Version>
5+
<Version>1.7.1</Version>
66
<GeneratePackageOnBuild>true</GeneratePackageOnBuild>
77
<Authors>ncc;YeXiangQin</Authors>
88
<Description>FreeSql is the ORM in .NetCore, .NetFramework, And Xamarin. It supports Mysql, Postgresql, SqlServer, Oracle, Sqlite, Odbc, 达梦, 人大金仓, 神舟通用, And Access</Description>

FreeSql.DbContext/FreeSql.DbContext.xml

Lines changed: 16 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)