From bf72bf423cc48065e1adb568820f56de76876c22 Mon Sep 17 00:00:00 2001 From: 2881099 <2881099@qq.com> Date: Sat, 23 Mar 2019 02:11:18 +0800 Subject: [PATCH] ## v0.3.25 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 修复 全局过滤器一个赋值低级错误; - 增加 IFreeSql 空接口,现实多个 IFreeSql 注入使用,使用泛型标识区分; --- .../Controllers/ValuesController.cs | 8 ++++-- Examples/dbcontext_01/Startup.cs | 27 +++++++++++++++--- Examples/orm_vs/orm_vs.csproj | 6 ++-- .../Controllers/SongController.cs | 2 ++ Examples/repository_01/Entitys/Song.cs | 1 + Examples/repository_01/Startup.cs | 28 +++++++++++-------- FreeSql.DbContext/FreeSql.DbContext.csproj | 2 +- FreeSql.Repository/FreeSql.Repository.csproj | 2 +- FreeSql.Repository/Utils.cs | 2 +- FreeSql/FreeSql.csproj | 2 +- FreeSql/FreeSqlBuilder.cs | 15 +++++----- FreeSql/Interface/IFreeSql.cs | 4 +-- FreeSql/MySql/MySqlProvider.cs | 2 +- FreeSql/Oracle/OracleProvider.cs | 2 +- FreeSql/PostgreSQL/PostgreSQLProvider.cs | 2 +- FreeSql/SqlServer/SqlServerProvider.cs | 2 +- FreeSql/Sqlite/SqliteProvider.cs | 2 +- 17 files changed, 71 insertions(+), 38 deletions(-) diff --git a/Examples/dbcontext_01/Controllers/ValuesController.cs b/Examples/dbcontext_01/Controllers/ValuesController.cs index f1c67a4e..58456a6f 100644 --- a/Examples/dbcontext_01/Controllers/ValuesController.cs +++ b/Examples/dbcontext_01/Controllers/ValuesController.cs @@ -2,6 +2,7 @@ using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; +using FreeSql; using Microsoft.AspNetCore.Mvc; namespace dbcontext_01.Controllers @@ -12,9 +13,12 @@ namespace dbcontext_01.Controllers { IFreeSql _orm; - public ValuesController(SongContext songContext, IFreeSql orm) { + public ValuesController(SongContext songContext, + IFreeSql orm1, IFreeSql orm2, + IFreeSql orm3 + ) { - _orm = orm; + _orm = orm1; } diff --git a/Examples/dbcontext_01/Startup.cs b/Examples/dbcontext_01/Startup.cs index 40a88ff0..eee2e446 100644 --- a/Examples/dbcontext_01/Startup.cs +++ b/Examples/dbcontext_01/Startup.cs @@ -20,8 +20,8 @@ namespace dbcontext_01 Configuration = configuration; Fsql = new FreeSql.FreeSqlBuilder() - //.UseConnectionString(FreeSql.DataType.Sqlite, @"Data Source=|DataDirectory|\document.db;Pooling=true;Max Pool Size=10") - .UseConnectionString(FreeSql.DataType.SqlServer, "Data Source=.;Integrated Security=True;Initial Catalog=freesqlTest;Pooling=true;Max Pool Size=10") + .UseConnectionString(FreeSql.DataType.Sqlite, @"Data Source=|DataDirectory|\document.db;Pooling=true;Max Pool Size=10") + //.UseConnectionString(FreeSql.DataType.SqlServer, "Data Source=.;Integrated Security=True;Initial Catalog=freesqlTest;Pooling=true;Max Pool Size=10") .UseLogger(loggerFactory.CreateLogger()) .UseAutoSyncStructure(true) .UseLazyLoading(true) @@ -30,11 +30,27 @@ namespace dbcontext_01 (cmd, log) => Trace.WriteLine(log) ) .Build(); + + Fsql2 = new FreeSql.FreeSqlBuilder() + .UseConnectionString(FreeSql.DataType.Sqlite, @"Data Source=|DataDirectory|\document222.db;Pooling=true;Max Pool Size=10") + //.UseConnectionString(FreeSql.DataType.SqlServer, "Data Source=.;Integrated Security=True;Initial Catalog=freesqlTest;Pooling=true;Max Pool Size=10") + .UseLogger(loggerFactory.CreateLogger()) + .UseAutoSyncStructure(true) + .UseLazyLoading(true) + + .UseMonitorCommand(cmd => Trace.WriteLine(cmd.CommandText), + (cmd, log) => Trace.WriteLine(log) + ) + .Build(); } - public IConfiguration Configuration { get; } + enum MySql { } + enum PgSql { } + + public IConfiguration Configuration { get; } public static IFreeSql Fsql { get; private set; } - + public static IFreeSql Fsql2 { get; private set; } + public void ConfigureServices(IServiceCollection services) { services.AddMvc(); @@ -46,7 +62,10 @@ namespace dbcontext_01 //options.IncludeXmlComments(xmlPath); }); + + services.AddSingleton(Fsql); + services.AddSingleton>(Fsql2); services.AddFreeDbContext(options => options.UseFreeSql(Fsql)); } diff --git a/Examples/orm_vs/orm_vs.csproj b/Examples/orm_vs/orm_vs.csproj index ef04b729..5ef35aed 100644 --- a/Examples/orm_vs/orm_vs.csproj +++ b/Examples/orm_vs/orm_vs.csproj @@ -2,12 +2,12 @@ Exe - netcoreapp2.2 + netcoreapp2.1 - - + + diff --git a/Examples/repository_01/Controllers/SongController.cs b/Examples/repository_01/Controllers/SongController.cs index 9c874530..d162c33c 100644 --- a/Examples/repository_01/Controllers/SongController.cs +++ b/Examples/repository_01/Controllers/SongController.cs @@ -20,6 +20,8 @@ namespace restful.Controllers { public class xxxx { public int Id { get; set; } + + public bool IsDeleted { get; set; } } diff --git a/Examples/repository_01/Entitys/Song.cs b/Examples/repository_01/Entitys/Song.cs index f91f2505..8c8a8a14 100644 --- a/Examples/repository_01/Entitys/Song.cs +++ b/Examples/repository_01/Entitys/Song.cs @@ -1,4 +1,5 @@ using FreeSql.DataAnnotations; +using repository_01; namespace restful.Entitys { public class Song { diff --git a/Examples/repository_01/Startup.cs b/Examples/repository_01/Startup.cs index 0baf7025..1442ddf9 100644 --- a/Examples/repository_01/Startup.cs +++ b/Examples/repository_01/Startup.cs @@ -19,15 +19,15 @@ namespace repository_01 { /// /// 用户密码信息 /// - public class SysUserLogOn { + public class Sys1UserLogOn { [Column(IsPrimary = true, Name = "Id")] public Guid UserLogOnId { get; set; } - public virtual SysUser User { get; set; } + public virtual Sys1User User { get; set; } } - public class SysUser { + public class Sys1User { [Column(IsPrimary = true, Name = "Id")] public Guid UserId { get; set; } - public virtual SysUserLogOn UserLogOn { get; set; } + public virtual Sys1UserLogOn UserLogOn { get; set; } } public class Startup { @@ -43,11 +43,11 @@ namespace repository_01 { .UseMonitorCommand(cmd => Trace.WriteLine(cmd.CommandText)) .Build(); - var sysu = new SysUser { }; - Fsql.Insert().AppendData(sysu).ExecuteAffrows(); - Fsql.Insert().AppendData(new SysUserLogOn { UserLogOnId = sysu.UserId }).ExecuteAffrows(); - var a = Fsql.Select().ToList(); - var b = Fsql.Select().Any(); + var sysu = new Sys1User { }; + Fsql.Insert().AppendData(sysu).ExecuteAffrows(); + Fsql.Insert().AppendData(new Sys1UserLogOn { UserLogOnId = sysu.UserId }).ExecuteAffrows(); + var a = Fsql.Select().ToList(); + var b = Fsql.Select().Any(); } public IConfiguration Configuration { get; } @@ -92,8 +92,10 @@ namespace repository_01 { var builder = new ContainerBuilder(); - builder.RegisterFreeRepository( - filter => filter.Apply("test", a => a.Title == DateTime.Now.ToString() + System.Threading.Thread.CurrentThread.ManagedThreadId), + builder.RegisterFreeRepository(filter => filter + .Apply("test", a => a.Title == DateTime.Now.ToString() + System.Threading.Thread.CurrentThread.ManagedThreadId) + .Apply("softdelete", a => a.IsDeleted == false) + , this.GetType().Assembly ); @@ -121,4 +123,8 @@ namespace repository_01 { }); } } + + public interface ISoftDelete { + bool IsDeleted { get; set; } + } } diff --git a/FreeSql.DbContext/FreeSql.DbContext.csproj b/FreeSql.DbContext/FreeSql.DbContext.csproj index 784e8259..e06c6fa2 100644 --- a/FreeSql.DbContext/FreeSql.DbContext.csproj +++ b/FreeSql.DbContext/FreeSql.DbContext.csproj @@ -2,7 +2,7 @@ netstandard2.0 - 0.3.24 + 0.3.25 true YeXiangQin FreeSql is the most convenient ORM in dotnet. It supports Mysql, Postgresql, SqlServer, Oracle and Sqlite. diff --git a/FreeSql.Repository/FreeSql.Repository.csproj b/FreeSql.Repository/FreeSql.Repository.csproj index 1ce52e7a..4f7bddcb 100644 --- a/FreeSql.Repository/FreeSql.Repository.csproj +++ b/FreeSql.Repository/FreeSql.Repository.csproj @@ -2,7 +2,7 @@ netstandard2.0 - 0.3.24 + 0.3.25 YeXiangQin FreeSql Implementation of General Repository, Support MySql/SqlServer/PostgreSQL/Oracle/Sqlite, and read/write separation、and split table. https://github.com/2881099/FreeSql/wiki/Repository diff --git a/FreeSql.Repository/Utils.cs b/FreeSql.Repository/Utils.cs index 3e843872..331a8de3 100644 --- a/FreeSql.Repository/Utils.cs +++ b/FreeSql.Repository/Utils.cs @@ -46,7 +46,7 @@ namespace FreeSql { notExists.TryAdd(gf.name, true); //防止第二次错误 continue; } - newFilter.Add(gf.name, gf.exp); + newFilter.Add(gf.name, newExp); } if (newFilter.Any() == false) return; diff --git a/FreeSql/FreeSql.csproj b/FreeSql/FreeSql.csproj index 70640e14..a904ac81 100644 --- a/FreeSql/FreeSql.csproj +++ b/FreeSql/FreeSql.csproj @@ -2,7 +2,7 @@ netstandard2.0 - 0.3.24 + 0.3.25 true YeXiangQin FreeSql is the most convenient ORM in dotnet. It supports Mysql, Postgresql, SqlServer, Oracle and Sqlite. diff --git a/FreeSql/FreeSqlBuilder.cs b/FreeSql/FreeSqlBuilder.cs index 4c8d75c5..b1f4d838 100644 --- a/FreeSql/FreeSqlBuilder.cs +++ b/FreeSql/FreeSqlBuilder.cs @@ -124,14 +124,15 @@ namespace FreeSql { return this; } - public IFreeSql Build() { - IFreeSql ret = null; + public IFreeSql Build() => Build(); + public IFreeSql Build() { + IFreeSql ret = null; switch(_dataType) { - case DataType.MySql: ret = new MySql.MySqlProvider(_cache, _logger, _masterConnectionString, _slaveConnectionString); break; - case DataType.SqlServer: ret = new SqlServer.SqlServerProvider(_cache, _logger, _masterConnectionString, _slaveConnectionString); break; - case DataType.PostgreSQL: ret = new PostgreSQL.PostgreSQLProvider(_cache, _logger, _masterConnectionString, _slaveConnectionString); break; - case DataType.Oracle: ret = new Oracle.OracleProvider(_cache, _logger, _masterConnectionString, _slaveConnectionString); break; - case DataType.Sqlite: ret = new Sqlite.SqliteProvider(_cache, _logger, _masterConnectionString, _slaveConnectionString); break; + case DataType.MySql: ret = new MySql.MySqlProvider(_cache, _logger, _masterConnectionString, _slaveConnectionString); break; + case DataType.SqlServer: ret = new SqlServer.SqlServerProvider(_cache, _logger, _masterConnectionString, _slaveConnectionString); break; + case DataType.PostgreSQL: ret = new PostgreSQL.PostgreSQLProvider(_cache, _logger, _masterConnectionString, _slaveConnectionString); break; + case DataType.Oracle: ret = new Oracle.OracleProvider(_cache, _logger, _masterConnectionString, _slaveConnectionString); break; + case DataType.Sqlite: ret = new Sqlite.SqliteProvider(_cache, _logger, _masterConnectionString, _slaveConnectionString); break; } if (ret != null) { ret.CodeFirst.IsAutoSyncStructure = _isAutoSyncStructure; diff --git a/FreeSql/Interface/IFreeSql.cs b/FreeSql/Interface/IFreeSql.cs index 8c157ac7..b25c13c1 100644 --- a/FreeSql/Interface/IFreeSql.cs +++ b/FreeSql/Interface/IFreeSql.cs @@ -1,8 +1,8 @@ using FreeSql; using System; using System.Collections.Generic; -using System.Data; -using System.Text; + +public interface IFreeSql : IFreeSql { } public interface IFreeSql { /// diff --git a/FreeSql/MySql/MySqlProvider.cs b/FreeSql/MySql/MySqlProvider.cs index c1c87bd9..5b12b1c7 100644 --- a/FreeSql/MySql/MySqlProvider.cs +++ b/FreeSql/MySql/MySqlProvider.cs @@ -10,7 +10,7 @@ using System.Data.Common; namespace FreeSql.MySql { - class MySqlProvider : IFreeSql { + class MySqlProvider : IFreeSql { static MySqlProvider() { Utils.dicExecuteArrayRowReadClassOrTuple.Add(typeof(MygisPoint), true); diff --git a/FreeSql/Oracle/OracleProvider.cs b/FreeSql/Oracle/OracleProvider.cs index e8fba743..a7119e5e 100644 --- a/FreeSql/Oracle/OracleProvider.cs +++ b/FreeSql/Oracle/OracleProvider.cs @@ -10,7 +10,7 @@ using System.Data.Common; namespace FreeSql.Oracle { - class OracleProvider : IFreeSql { + class OracleProvider : IFreeSql { public ISelect Select() where T1 : class => new OracleSelect(this, this.InternalCommonUtils, this.InternalCommonExpression, null); public ISelect Select(object dywhere) where T1 : class => new OracleSelect(this, this.InternalCommonUtils, this.InternalCommonExpression, dywhere); diff --git a/FreeSql/PostgreSQL/PostgreSQLProvider.cs b/FreeSql/PostgreSQL/PostgreSQLProvider.cs index 61b5fbc8..c591a89a 100644 --- a/FreeSql/PostgreSQL/PostgreSQLProvider.cs +++ b/FreeSql/PostgreSQL/PostgreSQLProvider.cs @@ -16,7 +16,7 @@ using System.Net.NetworkInformation; namespace FreeSql.PostgreSQL { - class PostgreSQLProvider : IFreeSql { + class PostgreSQLProvider : IFreeSql { static PostgreSQLProvider() { Utils.dicExecuteArrayRowReadClassOrTuple.Add(typeof(BitArray), true); diff --git a/FreeSql/SqlServer/SqlServerProvider.cs b/FreeSql/SqlServer/SqlServerProvider.cs index 42fe5168..649a67f2 100644 --- a/FreeSql/SqlServer/SqlServerProvider.cs +++ b/FreeSql/SqlServer/SqlServerProvider.cs @@ -9,7 +9,7 @@ using System.Collections.Generic; namespace FreeSql.SqlServer { - class SqlServerProvider : IFreeSql { + class SqlServerProvider : IFreeSql { public ISelect Select() where T1 : class => new SqlServerSelect(this, this.InternalCommonUtils, this.InternalCommonExpression, null); public ISelect Select(object dywhere) where T1 : class => new SqlServerSelect(this, this.InternalCommonUtils, this.InternalCommonExpression, dywhere); diff --git a/FreeSql/Sqlite/SqliteProvider.cs b/FreeSql/Sqlite/SqliteProvider.cs index 0c83dbb8..88ef2a7a 100644 --- a/FreeSql/Sqlite/SqliteProvider.cs +++ b/FreeSql/Sqlite/SqliteProvider.cs @@ -10,7 +10,7 @@ using System.Data.Common; namespace FreeSql.Sqlite { - class SqliteProvider : IFreeSql { + class SqliteProvider : IFreeSql { public ISelect Select() where T1 : class => new SqliteSelect(this, this.InternalCommonUtils, this.InternalCommonExpression, null); public ISelect Select(object dywhere) where T1 : class => new SqliteSelect(this, this.InternalCommonUtils, this.InternalCommonExpression, dywhere);