- 移除 ISelect<T> where T : class 约束限制;#515

This commit is contained in:
2881099
2020-11-02 21:01:07 +08:00
parent 5580602a19
commit f3bc47feca
92 changed files with 497 additions and 860 deletions

View File

@ -0,0 +1,43 @@
using System;
using System.Collections.Generic;
using System.Data;
using System.Text;
namespace FreeSql.Internal.CommonProvider
{
public abstract partial class BaseDbProvider : IFreeSql
{
public abstract ISelect<T1> CreateSelectProvider<T1>(object dywhere);
public abstract IInsert<T1> CreateInsertProvider<T1>() where T1 : class;
public abstract IUpdate<T1> CreateUpdateProvider<T1>(object dywhere);
public abstract IDelete<T1> CreateDeleteProvider<T1>(object dywhere);
public abstract IInsertOrUpdate<T1> CreateInsertOrUpdateProvider<T1>() where T1 : class;
public ISelect<T1> Select<T1>() where T1 : class => CreateSelectProvider<T1>(null);
public ISelect<T1> Select<T1>(object dywhere) where T1 : class => CreateSelectProvider<T1>(dywhere);
public IInsert<T1> Insert<T1>() where T1 : class => CreateInsertProvider<T1>();
public IInsert<T1> Insert<T1>(T1 source) where T1 : class => this.Insert<T1>().AppendData(source);
public IInsert<T1> Insert<T1>(T1[] source) where T1 : class => this.Insert<T1>().AppendData(source);
public IInsert<T1> Insert<T1>(List<T1> source) where T1 : class => this.Insert<T1>().AppendData(source);
public IInsert<T1> Insert<T1>(IEnumerable<T1> source) where T1 : class => this.Insert<T1>().AppendData(source);
public IUpdate<T1> Update<T1>() where T1 : class => CreateUpdateProvider<T1>(null);
public IUpdate<T1> Update<T1>(object dywhere) where T1 : class => CreateUpdateProvider<T1>(dywhere);
public IDelete<T1> Delete<T1>() where T1 : class => CreateDeleteProvider<T1>(null);
public IDelete<T1> Delete<T1>(object dywhere) where T1 : class => CreateDeleteProvider<T1>(dywhere);
public IInsertOrUpdate<T1> InsertOrUpdate<T1>() where T1 : class => CreateInsertOrUpdateProvider<T1>();
public IAdo Ado { get; protected set; }
public IAop Aop { get; protected set; }
public ICodeFirst CodeFirst { get; protected set; }
public virtual IDbFirst DbFirst { get; protected set; }
public CommonUtils InternalCommonUtils { get; protected set; }
public CommonExpression InternalCommonExpression { get; protected set; }
public void Transaction(Action handler) => Ado.Transaction(handler);
public void Transaction(IsolationLevel isolationLevel, Action handler) => Ado.Transaction(isolationLevel, handler);
public GlobalFilter GlobalFilter { get; } = new GlobalFilter();
public abstract void Dispose();
}
}

View File

@ -11,7 +11,7 @@ using System.Threading.Tasks;
namespace FreeSql.Internal.CommonProvider
{
public abstract partial class DeleteProvider<T1> : IDelete<T1> where T1 : class
public abstract partial class DeleteProvider<T1> : IDelete<T1>
{
public IFreeSql _orm;
public CommonUtils _commonUtils;

View File

@ -165,7 +165,7 @@ namespace FreeSql.Internal.CommonProvider
}
}
public abstract partial class Select0Provider<TSelect, T1> : Select0Provider, ISelect0<TSelect, T1> where TSelect : class where T1 : class
public abstract partial class Select0Provider<TSelect, T1> : Select0Provider, ISelect0<TSelect, T1> where TSelect : class
{
public Select0Provider(IFreeSql orm, CommonUtils commonUtils, CommonExpression commonExpression, object dywhere)
{
@ -371,7 +371,7 @@ namespace FreeSql.Internal.CommonProvider
public IDelete<T1> ToDelete()
{
if (_tables[0].Table.Primarys.Any() == false) throw new Exception($"ToDelete 功能要求实体类 {_tables[0].Table.CsName} 必须有主键");
var del = _orm.Delete<T1>() as DeleteProvider<T1>;
var del = (_orm as BaseDbProvider).CreateDeleteProvider<T1>(null) as DeleteProvider<T1>;
if (_tables[0].Table.Type != typeof(T1)) del.AsType(_tables[0].Table.Type);
if (_params.Any()) del._params = new List<DbParameter>(_params.ToArray());
if (_whereGlobalFilter.Any()) del._whereGlobalFilter = new List<GlobalFilter.Item>(_whereGlobalFilter.ToArray());
@ -399,7 +399,7 @@ namespace FreeSql.Internal.CommonProvider
public IUpdate<T1> ToUpdate()
{
if (_tables[0].Table.Primarys.Any() == false) throw new Exception($"ToUpdate 功能要求实体类 {_tables[0].Table.CsName} 必须有主键");
var upd = _orm.Update<T1>() as UpdateProvider<T1>;
var upd = (_orm as BaseDbProvider).CreateUpdateProvider<T1>(null) as UpdateProvider<T1>;
if (_tables[0].Table.Type != typeof(T1)) upd.AsType(_tables[0].Table.Type);
if (_params.Any()) upd._params = new List<DbParameter>(_params.ToArray());
if (_whereGlobalFilter.Any()) upd._whereGlobalFilter = new List<GlobalFilter.Item>(_whereGlobalFilter.ToArray());

View File

@ -10,7 +10,6 @@ namespace FreeSql.Internal.CommonProvider
{
public abstract class Select10Provider<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10> : Select0Provider<ISelect<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10>, T1>, ISelect<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10>
where T1 : class
where T2 : class
where T3 : class
where T4 : class

View File

@ -10,7 +10,6 @@ namespace FreeSql.Internal.CommonProvider
{
public abstract class Select11Provider<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11> : Select0Provider<ISelect<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11>, T1>, ISelect<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11>
where T1 : class
where T2 : class
where T3 : class
where T4 : class

View File

@ -10,7 +10,6 @@ namespace FreeSql.Internal.CommonProvider
{
public abstract class Select12Provider<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12> : Select0Provider<ISelect<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12>, T1>, ISelect<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12>
where T1 : class
where T2 : class
where T3 : class
where T4 : class

View File

@ -10,7 +10,6 @@ namespace FreeSql.Internal.CommonProvider
{
public abstract class Select13Provider<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13> : Select0Provider<ISelect<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13>, T1>, ISelect<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13>
where T1 : class
where T2 : class
where T3 : class
where T4 : class

View File

@ -10,7 +10,6 @@ namespace FreeSql.Internal.CommonProvider
{
public abstract class Select14Provider<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14> : Select0Provider<ISelect<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14>, T1>, ISelect<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14>
where T1 : class
where T2 : class
where T3 : class
where T4 : class

View File

@ -10,7 +10,6 @@ namespace FreeSql.Internal.CommonProvider
{
public abstract class Select15Provider<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15> : Select0Provider<ISelect<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15>, T1>, ISelect<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15>
where T1 : class
where T2 : class
where T3 : class
where T4 : class

View File

@ -10,7 +10,6 @@ namespace FreeSql.Internal.CommonProvider
{
public abstract class Select16Provider<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16> : Select0Provider<ISelect<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16>, T1>, ISelect<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16>
where T1 : class
where T2 : class
where T3 : class
where T4 : class

View File

@ -18,7 +18,6 @@ namespace FreeSql.Internal.CommonProvider
{
public abstract class Select1Provider<T1> : Select0Provider<ISelect<T1>, T1>, ISelect<T1>
where T1 : class
{
public Select1Provider(IFreeSql orm, CommonUtils commonUtils, CommonExpression commonExpression, object dywhere) : base(orm, commonUtils, commonExpression, dywhere)
{

View File

@ -10,7 +10,6 @@ namespace FreeSql.Internal.CommonProvider
{
public abstract class Select2Provider<T1, T2> : Select0Provider<ISelect<T1, T2>, T1>, ISelect<T1, T2>
where T1 : class
where T2 : class
{

View File

@ -10,7 +10,6 @@ namespace FreeSql.Internal.CommonProvider
{
public abstract class Select3Provider<T1, T2, T3> : Select0Provider<ISelect<T1, T2, T3>, T1>, ISelect<T1, T2, T3>
where T1 : class
where T2 : class
where T3 : class
{

View File

@ -10,7 +10,6 @@ namespace FreeSql.Internal.CommonProvider
{
public abstract class Select4Provider<T1, T2, T3, T4> : Select0Provider<ISelect<T1, T2, T3, T4>, T1>, ISelect<T1, T2, T3, T4>
where T1 : class
where T2 : class
where T3 : class
where T4 : class

View File

@ -10,7 +10,6 @@ namespace FreeSql.Internal.CommonProvider
{
public abstract class Select5Provider<T1, T2, T3, T4, T5> : Select0Provider<ISelect<T1, T2, T3, T4, T5>, T1>, ISelect<T1, T2, T3, T4, T5>
where T1 : class
where T2 : class
where T3 : class
where T4 : class

View File

@ -10,7 +10,6 @@ namespace FreeSql.Internal.CommonProvider
{
public abstract class Select6Provider<T1, T2, T3, T4, T5, T6> : Select0Provider<ISelect<T1, T2, T3, T4, T5, T6>, T1>, ISelect<T1, T2, T3, T4, T5, T6>
where T1 : class
where T2 : class
where T3 : class
where T4 : class

View File

@ -10,7 +10,6 @@ namespace FreeSql.Internal.CommonProvider
{
public abstract class Select7Provider<T1, T2, T3, T4, T5, T6, T7> : Select0Provider<ISelect<T1, T2, T3, T4, T5, T6, T7>, T1>, ISelect<T1, T2, T3, T4, T5, T6, T7>
where T1 : class
where T2 : class
where T3 : class
where T4 : class

View File

@ -10,7 +10,6 @@ namespace FreeSql.Internal.CommonProvider
{
public abstract class Select8Provider<T1, T2, T3, T4, T5, T6, T7, T8> : Select0Provider<ISelect<T1, T2, T3, T4, T5, T6, T7, T8>, T1>, ISelect<T1, T2, T3, T4, T5, T6, T7, T8>
where T1 : class
where T2 : class
where T3 : class
where T4 : class

View File

@ -10,7 +10,6 @@ namespace FreeSql.Internal.CommonProvider
{
public abstract class Select9Provider<T1, T2, T3, T4, T5, T6, T7, T8, T9> : Select0Provider<ISelect<T1, T2, T3, T4, T5, T6, T7, T8, T9>, T1>, ISelect<T1, T2, T3, T4, T5, T6, T7, T8, T9>
where T1 : class
where T2 : class
where T3 : class
where T4 : class

View File

@ -13,7 +13,7 @@ using System.Threading.Tasks;
namespace FreeSql.Internal.CommonProvider
{
public abstract partial class UpdateProvider<T1> : IUpdate<T1> where T1 : class
public abstract partial class UpdateProvider<T1> : IUpdate<T1>
{
public IFreeSql _orm;
public CommonUtils _commonUtils;