diff --git a/src/Yi.Framework/Yi.Framework.Application.Contracts/Student/Dtos/StudentCreateInputVo.cs b/src/Yi.Framework/Yi.Framework.Application.Contracts/Student/Dtos/StudentCreateInputVo.cs index fa6c3bbd..2850490a 100644 --- a/src/Yi.Framework/Yi.Framework.Application.Contracts/Student/Dtos/StudentCreateInputVo.cs +++ b/src/Yi.Framework/Yi.Framework.Application.Contracts/Student/Dtos/StudentCreateInputVo.cs @@ -11,5 +11,6 @@ namespace Yi.Framework.Application.Contracts.Student.Dtos /// public class StudentCreateInputVo { + public string Name { get; set; } } } diff --git a/src/Yi.Framework/Yi.Framework.Application.Contracts/Student/Dtos/StudentGetListInputVo.cs b/src/Yi.Framework/Yi.Framework.Application.Contracts/Student/Dtos/StudentGetListInputVo.cs index cf548210..a8d48c99 100644 --- a/src/Yi.Framework/Yi.Framework.Application.Contracts/Student/Dtos/StudentGetListInputVo.cs +++ b/src/Yi.Framework/Yi.Framework.Application.Contracts/Student/Dtos/StudentGetListInputVo.cs @@ -8,5 +8,6 @@ namespace Yi.Framework.Application.Contracts.Student.Dtos { public class StudentGetListInputVo { + public string? Name { get; set; } } } diff --git a/src/Yi.Framework/Yi.Framework.Application.Contracts/Student/Dtos/StudentGetListOutputDto.cs b/src/Yi.Framework/Yi.Framework.Application.Contracts/Student/Dtos/StudentGetListOutputDto.cs index 02a7bb83..ab35ff82 100644 --- a/src/Yi.Framework/Yi.Framework.Application.Contracts/Student/Dtos/StudentGetListOutputDto.cs +++ b/src/Yi.Framework/Yi.Framework.Application.Contracts/Student/Dtos/StudentGetListOutputDto.cs @@ -10,5 +10,6 @@ namespace Yi.Framework.Application.Contracts.Student.Dtos public class StudentGetListOutputDto : IEntityDto { public long Id { get; set; } + public string Name { get; set; } } } diff --git a/src/Yi.Framework/Yi.Framework.Application.Contracts/Student/Dtos/StudentGetOutputDto.cs b/src/Yi.Framework/Yi.Framework.Application.Contracts/Student/Dtos/StudentGetOutputDto.cs index 74632e9c..9b04889a 100644 --- a/src/Yi.Framework/Yi.Framework.Application.Contracts/Student/Dtos/StudentGetOutputDto.cs +++ b/src/Yi.Framework/Yi.Framework.Application.Contracts/Student/Dtos/StudentGetOutputDto.cs @@ -10,5 +10,6 @@ namespace Yi.Framework.Application.Contracts.Student.Dtos public class StudentGetOutputDto : IEntityDto { public long Id { get; set; } + public string Name { get; set; } } } diff --git a/src/Yi.Framework/Yi.Framework.Application.Contracts/Student/Dtos/StudentUpdateInputVo.cs b/src/Yi.Framework/Yi.Framework.Application.Contracts/Student/Dtos/StudentUpdateInputVo.cs index 465e9ec1..d273f329 100644 --- a/src/Yi.Framework/Yi.Framework.Application.Contracts/Student/Dtos/StudentUpdateInputVo.cs +++ b/src/Yi.Framework/Yi.Framework.Application.Contracts/Student/Dtos/StudentUpdateInputVo.cs @@ -8,5 +8,7 @@ namespace Yi.Framework.Application.Contracts.Student.Dtos { public class StudentUpdateInputVo { + public long Id { get; set; } + public string Name { get; set; } } } diff --git a/src/Yi.Framework/Yi.Framework.Application/Student/MapperConfig/StudentProfile.cs b/src/Yi.Framework/Yi.Framework.Application/Student/MapperConfig/StudentProfile.cs index 932359b4..171448c9 100644 --- a/src/Yi.Framework/Yi.Framework.Application/Student/MapperConfig/StudentProfile.cs +++ b/src/Yi.Framework/Yi.Framework.Application/Student/MapperConfig/StudentProfile.cs @@ -1,12 +1,23 @@ -using System; +using AutoMapper; +using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; +using Yi.Framework.Application.Contracts.Student.Dtos; +using Yi.Framework.Domain.Student.Entities; namespace Yi.Framework.Application.Student.MapperConfig { - internal class StudentProfile + public class StudentProfile: Profile { + public StudentProfile() + { + CreateMap(); + CreateMap(); + CreateMap(); + CreateMap(); + CreateMap(); + } } } diff --git a/src/Yi.Framework/Yi.Framework.AspNetCore/Microsoft/AspNetCore/Builder/CorsUseExtensions.cs b/src/Yi.Framework/Yi.Framework.AspNetCore/Microsoft/AspNetCore/Builder/CorsUseExtensions.cs index 7a7e3078..e4e85233 100644 --- a/src/Yi.Framework/Yi.Framework.AspNetCore/Microsoft/AspNetCore/Builder/CorsUseExtensions.cs +++ b/src/Yi.Framework/Yi.Framework.AspNetCore/Microsoft/AspNetCore/Builder/CorsUseExtensions.cs @@ -9,7 +9,7 @@ namespace AspNetCore.Microsoft.AspNetCore.Builder { public static class CorsUseExtensions { - public static void UseCorsService(this IApplicationBuilder app) + public static void UseCorsServer(this IApplicationBuilder app) { app.UseCors("CorsPolicy"); } diff --git a/src/Yi.Framework/Yi.Framework.Core.AutoMapper/Extensions/AutoMapperExtensions.cs b/src/Yi.Framework/Yi.Framework.Core.AutoMapper/Extensions/AutoMapperExtensions.cs index 153206ad..36b886a5 100644 --- a/src/Yi.Framework/Yi.Framework.Core.AutoMapper/Extensions/AutoMapperExtensions.cs +++ b/src/Yi.Framework/Yi.Framework.Core.AutoMapper/Extensions/AutoMapperExtensions.cs @@ -22,7 +22,7 @@ namespace Yi.Framework.Autofac.Extensions { if (a.FullName is not null) { - profileList.AddRange(AssemblyHelper.GetClassByInterfaces(a.FullName, typeof(Profile))); + profileList.AddRange(AssemblyHelper.GetClassByParentClass(a.FullName, typeof(Profile))); } }); diff --git a/src/Yi.Framework/Yi.Framework.Core.Sqlsugar/Const/SqlsugarConst.cs b/src/Yi.Framework/Yi.Framework.Core.Sqlsugar/Const/SqlsugarConst.cs new file mode 100644 index 00000000..274024ae --- /dev/null +++ b/src/Yi.Framework/Yi.Framework.Core.Sqlsugar/Const/SqlsugarConst.cs @@ -0,0 +1,15 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Yi.Framework.Core.Sqlsugar.Const +{ + public class SqlsugarConst + { + public const string 读写分离为空 = "开启读写分离后,读库连接不能为空"; + + public const string DbType配置为空 = "DbType配置为空,必须选择一个数据库类型"; + } +} diff --git a/src/Yi.Framework/Yi.Framework.Core.Sqlsugar/Extensions/SqlsugarCodeFirstExtensions.cs b/src/Yi.Framework/Yi.Framework.Core.Sqlsugar/Extensions/SqlsugarCodeFirstExtensions.cs new file mode 100644 index 00000000..4210b894 --- /dev/null +++ b/src/Yi.Framework/Yi.Framework.Core.Sqlsugar/Extensions/SqlsugarCodeFirstExtensions.cs @@ -0,0 +1,59 @@ +using Microsoft.AspNetCore.Builder; +using Microsoft.Extensions.DependencyInjection; +using Microsoft.Extensions.Options; +using SqlSugar; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Reflection; +using System.Text; +using System.Threading.Tasks; +using Yi.Framework.Core.Sqlsugar.Options; + +namespace Yi.Framework.Core.Sqlsugar.Extensions +{ + public static class SqlsugarCodeFirstExtensions + { + public static void UseSqlsugarCodeFirstServer(this IApplicationBuilder app) + { + var db = app.ApplicationServices.GetRequiredService(); + var options = app.ApplicationServices.GetRequiredService>(); + + var assemblys = new List(); + + //全盘加载 + if (options.Value.EntityAssembly is null) + { + assemblys.AddRange(AppDomain.CurrentDomain.GetAssemblies().ToList()); + } + //按需加载 + else + { + options.Value.EntityAssembly.ForEach(a => + { + assemblys.Add(Assembly.Load(a)); + }); + } + + foreach (var assembly in assemblys) + { + TableInvoer(db, assembly.GetTypes().ToList()); + } + + } + + private static void TableInvoer(ISqlSugarClient _Db, List typeList) + { + _Db.DbMaintenance.CreateDatabase(); + foreach (var t in typeList) + { + //扫描如果存在SugarTable特性 并且 不是分表模型,直接codefirst + if (t.GetCustomAttributes(false).Any(a => a.GetType().Equals(typeof(SugarTable)) + && !t.GetCustomAttributes(false).Any(a => a.GetType().Equals(typeof(SplitTableAttribute))))) + { + _Db.CodeFirst.SetStringDefaultLength(200).InitTables(t);//这样一个表就能成功创建了 + } + } + } + } +} diff --git a/src/Yi.Framework/Yi.Framework.Core.Sqlsugar/Extensions/SqlsugarExtensions.cs b/src/Yi.Framework/Yi.Framework.Core.Sqlsugar/Extensions/SqlsugarExtensions.cs index c56ceb8c..587310c7 100644 --- a/src/Yi.Framework/Yi.Framework.Core.Sqlsugar/Extensions/SqlsugarExtensions.cs +++ b/src/Yi.Framework/Yi.Framework.Core.Sqlsugar/Extensions/SqlsugarExtensions.cs @@ -10,6 +10,8 @@ using System.Text; using System.Threading.Tasks; using Yi.Framework.Core.Configuration; using Yi.Framework.Core.Model; +using Yi.Framework.Core.Sqlsugar.Const; +using Yi.Framework.Core.Sqlsugar.Options; using DbType = SqlSugar.DbType; namespace Yi.Framework.Core.Sqlsugar.Extensions @@ -18,11 +20,24 @@ namespace Yi.Framework.Core.Sqlsugar.Extensions { public static void AddSqlsugarServer(this IServiceCollection services, Action? action = null) { - DbType dbType; - var slavaConFig = new List(); - if (Appsettings.appBool("MutiDB_Enabled")) + var dbConnOptions = Appsettings.app("DbConnOptions"); + + if (dbConnOptions.DbType is null) { - var readCon = Appsettings.app>("DbConn", "ReadUrl"); + throw new ArgumentException(SqlsugarConst.DbType配置为空); + } + var slavaConFig = new List(); + + + + if (dbConnOptions.EnabledReadWrite) + { + if (dbConnOptions.ReadUrl is null) + { + throw new ArgumentException(SqlsugarConst.读写分离为空); + } + + var readCon = dbConnOptions.ReadUrl; readCon.ForEach(s => { @@ -31,19 +46,14 @@ namespace Yi.Framework.Core.Sqlsugar.Extensions }); } - switch (Appsettings.app("DbSelect")) - { - case "Mysql": dbType = DbType.MySql; break; - case "Sqlite": dbType = DbType.Sqlite; break; - case "Sqlserver": dbType = DbType.SqlServer; break; - case "Oracle": dbType = DbType.Oracle; break; - default: throw new Exception("DbSelect配置写的TM是个什么东西?"); - } + + + SqlSugarScope sqlSugar = new SqlSugarScope(new ConnectionConfig() { //准备添加分表分库 - DbType = dbType, - ConnectionString = Appsettings.app("DbConn", "WriteUrl"), + DbType = dbConnOptions.DbType ?? DbType.Sqlite, + ConnectionString = dbConnOptions.Url, IsAutoCloseConnection = true, MoreSettings = new ConnMoreSettings() { @@ -55,13 +65,6 @@ namespace Yi.Framework.Core.Sqlsugar.Extensions { EntityService = (c, p) => { - //// int? decimal?这种 isnullable=true - //if (c.PropertyType.IsGenericType && - //c.PropertyType.GetGenericTypeDefinition() == typeof(Nullable<>)) - //{ - // p.IsNullable = true; - //} - //高版C#写法 支持string?和string if (new NullabilityInfoContext() .Create(c).WriteState is NullabilityState.Nullable) @@ -73,6 +76,7 @@ namespace Yi.Framework.Core.Sqlsugar.Extensions }, db => { + //扩展 if (action is not null) { action(db); @@ -80,32 +84,12 @@ namespace Yi.Framework.Core.Sqlsugar.Extensions db.Aop.DataExecuting = (oldValue, entityInfo) => { - //var httpcontext = ServiceLocator.Instance.GetService().HttpContext; + switch (entityInfo.OperationType) { case DataFilterType.InsertByObject: - if (entityInfo.PropertyName == "CreateUser") - { - //entityInfo.SetValue(new Guid(httpcontext.Request.Headers["Id"].ToString())); - } - if (entityInfo.PropertyName == "TenantId") - { - //entityInfo.SetValue(new Guid(httpcontext.Request.Headers["TenantId"].ToString())); - } - if (entityInfo.PropertyName == "CreateTime") - { - entityInfo.SetValue(DateTime.Now); - } break; case DataFilterType.UpdateByObject: - if (entityInfo.PropertyName == "ModifyTime") - { - entityInfo.SetValue(DateTime.Now); - } - if (entityInfo.PropertyName == "ModifyUser") - { - //entityInfo.SetValue(new Guid(httpcontext.Request.Headers["Id"].ToString())); - } break; } @@ -125,8 +109,6 @@ namespace Yi.Framework.Core.Sqlsugar.Extensions sb.Append($"\r\n 完整SQL:{UtilMethods.GetSqlString(DbType.MySql, s, p)}"); _logger?.LogInformation(sb.ToString()); } - - }; }); diff --git a/src/Yi.Framework/Yi.Framework.Core.Sqlsugar/Options/DbConnOptions.cs b/src/Yi.Framework/Yi.Framework.Core.Sqlsugar/Options/DbConnOptions.cs new file mode 100644 index 00000000..f5ed700b --- /dev/null +++ b/src/Yi.Framework/Yi.Framework.Core.Sqlsugar/Options/DbConnOptions.cs @@ -0,0 +1,47 @@ +using SqlSugar; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Yi.Framework.Core.Sqlsugar.Options +{ + public class DbConnOptions + { + /// + /// 连接字符串,必填 + /// + public string? Url { get; set; } + + /// + /// 数据库类型 + /// + public DbType? DbType { get; set; } + + /// + /// 开启种子数据 + /// + public bool EnabledDbSeed = false; + + /// + /// 开启读写分离 + /// + public bool EnabledReadWrite = false; + + /// + /// 开启codefirst + /// + public bool EnabledCodeFirst = false; + + /// + /// 实体程序集 + /// + public List? EntityAssembly; + + /// + /// 读写分离 + /// + public List? ReadUrl { get; set; } + } +} diff --git a/src/Yi.Framework/Yi.Framework.Core.Sqlsugar/Yi.Framework.Core.Sqlsugar.csproj b/src/Yi.Framework/Yi.Framework.Core.Sqlsugar/Yi.Framework.Core.Sqlsugar.csproj index 07cf7472..cfdd1f64 100644 --- a/src/Yi.Framework/Yi.Framework.Core.Sqlsugar/Yi.Framework.Core.Sqlsugar.csproj +++ b/src/Yi.Framework/Yi.Framework.Core.Sqlsugar/Yi.Framework.Core.Sqlsugar.csproj @@ -16,8 +16,8 @@ - + diff --git a/src/Yi.Framework/Yi.Framework.Core.Sqlsugar/YiFrameworkCoreSqlsugarModule.cs b/src/Yi.Framework/Yi.Framework.Core.Sqlsugar/YiFrameworkCoreSqlsugarModule.cs index 8c4cbe06..0f9fde52 100644 --- a/src/Yi.Framework/Yi.Framework.Core.Sqlsugar/YiFrameworkCoreSqlsugarModule.cs +++ b/src/Yi.Framework/Yi.Framework.Core.Sqlsugar/YiFrameworkCoreSqlsugarModule.cs @@ -2,8 +2,8 @@ using Microsoft.Extensions.DependencyInjection; using StartupModules; using Yi.Framework.Core.Configuration; -using Yi.Framework.Core.Options; using Yi.Framework.Core.Sqlsugar.Extensions; +using Yi.Framework.Core.Sqlsugar.Options; using Yi.Framework.Core.Sqlsugar.Repositories; using Yi.Framework.Ddd; using Yi.Framework.Ddd.Repositories; @@ -14,13 +14,15 @@ namespace Yi.Framework.Core.Sqlsugar { public void Configure(IApplicationBuilder app, ConfigureMiddlewareContext context) { + app.UseSqlsugarCodeFirstServer(); } public void ConfigureServices(IServiceCollection services, ConfigureServicesContext context) { services.AddTransient(typeof(IRepository<>), typeof(SqlsugarRepository<>)); - services.Configure(Appsettings.appConfiguration("DbConn")); + services.Configure(Appsettings.appConfiguration("DbConnOptions")); services.AddSqlsugarServer(); + } } } \ No newline at end of file diff --git a/src/Yi.Framework/Yi.Framework.Core/Helper/AssemblyHelper.cs b/src/Yi.Framework/Yi.Framework.Core/Helper/AssemblyHelper.cs index 74a320aa..a8a70a0d 100644 --- a/src/Yi.Framework/Yi.Framework.Core/Helper/AssemblyHelper.cs +++ b/src/Yi.Framework/Yi.Framework.Core/Helper/AssemblyHelper.cs @@ -41,6 +41,26 @@ namespace Yi.Framework.Core.Helper ).ToList(); } + public static List GetClassByParentClass(string assemblyFile, Type type) + { + Assembly assembly = Assembly.Load(assemblyFile); + + List resList = new List(); + + List typeList = assembly.GetTypes().Where(m => m.IsClass).ToList(); + foreach (var t in typeList) + { + var data = t.BaseType; + if (data == type) + { + resList.Add(t); + } + + } + return resList; + } + + public static List GetClassByInterfaces(string assemblyFile, Type type) { Assembly assembly = Assembly.Load(assemblyFile); diff --git a/src/Yi.Framework/Yi.Framework.Core/Helper/ReflexHelper.cs b/src/Yi.Framework/Yi.Framework.Core/Helper/ReflexHelper.cs new file mode 100644 index 00000000..a2fba721 --- /dev/null +++ b/src/Yi.Framework/Yi.Framework.Core/Helper/ReflexHelper.cs @@ -0,0 +1,63 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Yi.Framework.Core.Helper +{ + public static class ReflexHelper + { + + #region 对象相关 + /// + /// 取对象属性值 + /// + /// + /// + /// + public static string GetModelValue(string FieldName, object obj) + { + try + { + Type Ts = obj.GetType(); + object o = Ts.GetProperty(FieldName).GetValue(obj, null); + if (null == o) + return null; + string Value = Convert.ToString(o); + if (string.IsNullOrEmpty(Value)) + return null; + return Value; + } + catch (Exception ex) + { + throw ex; + } + return null; + } + + /// + /// 设置对象属性值 + /// + /// + /// + /// + /// + public static bool SetModelValue(string FieldName, object Value, object obj) + { + try + { + Type Ts = obj.GetType(); + //object v = Convert.ChangeType(Value, Ts.GetProperty(FieldName).PropertyType); + Ts.GetProperty(FieldName).SetValue(obj, Value, null); + return true; + } + catch (Exception ex) + { + throw ex; + } + return false; + } + #endregion + } +} diff --git a/src/Yi.Framework/Yi.Framework.Core/Helper/SnowflakeHelper.cs b/src/Yi.Framework/Yi.Framework.Core/Helper/SnowflakeHelper.cs index 95d892ea..cefe21e6 100644 --- a/src/Yi.Framework/Yi.Framework.Core/Helper/SnowflakeHelper.cs +++ b/src/Yi.Framework/Yi.Framework.Core/Helper/SnowflakeHelper.cs @@ -1,4 +1,5 @@ -using System; +using SqlSugar; +using System; using System.Collections.Generic; using System.Linq; using System.Text; @@ -8,6 +9,8 @@ namespace Yi.Framework.Core.Helper { public static class SnowflakeHelper { + public static long NextId { get => SnowFlakeSingle.Instance.NextId(); } + public static long Next() { SnowflakeTool snowflakeTool = new SnowflakeTool(1); diff --git a/src/Yi.Framework/Yi.Framework.Core/Options/SqlConnOptions.cs b/src/Yi.Framework/Yi.Framework.Core/Options/SqlConnOptions.cs deleted file mode 100644 index 8bc0a560..00000000 --- a/src/Yi.Framework/Yi.Framework.Core/Options/SqlConnOptions.cs +++ /dev/null @@ -1,14 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; - -namespace Yi.Framework.Core.Options -{ - public class SqlConnOptions - { - public string WriteUrl { get; set; } = string.Empty; - public List? ReadUrl { get; set; } - } -} diff --git a/src/Yi.Framework/Yi.Framework.Core/Yi.Framework.Core.csproj b/src/Yi.Framework/Yi.Framework.Core/Yi.Framework.Core.csproj index fb962413..8abd83bd 100644 --- a/src/Yi.Framework/Yi.Framework.Core/Yi.Framework.Core.csproj +++ b/src/Yi.Framework/Yi.Framework.Core/Yi.Framework.Core.csproj @@ -8,6 +8,7 @@ + diff --git a/src/Yi.Framework/Yi.Framework.Ddd.Application/Services/ApplicationService.cs b/src/Yi.Framework/Yi.Framework.Ddd.Application/Services/ApplicationService.cs index 9b1c7579..a70e5e7c 100644 --- a/src/Yi.Framework/Yi.Framework.Ddd.Application/Services/ApplicationService.cs +++ b/src/Yi.Framework/Yi.Framework.Ddd.Application/Services/ApplicationService.cs @@ -1,14 +1,16 @@ using AutoMapper; +using Microsoft.Extensions.DependencyInjection; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; +using Yi.Framework.Core.Model; namespace Yi.Framework.Ddd.Services { public abstract class ApplicationService { - public IMapper _mapper { get; set; } + public IMapper _mapper { get => ServiceLocatorModel.Instance.GetRequiredService(); } } } diff --git a/src/Yi.Framework/Yi.Framework.Ddd.Application/Services/CrudAppService.cs b/src/Yi.Framework/Yi.Framework.Ddd.Application/Services/CrudAppService.cs index cf6cfcd6..c77ed4e0 100644 --- a/src/Yi.Framework/Yi.Framework.Ddd.Application/Services/CrudAppService.cs +++ b/src/Yi.Framework/Yi.Framework.Ddd.Application/Services/CrudAppService.cs @@ -3,6 +3,7 @@ using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; +using Yi.Framework.Core.Helper; using Yi.Framework.Ddd.Dtos; using Yi.Framework.Ddd.Entities; using Yi.Framework.Ddd.Services.Abstract; @@ -62,11 +63,15 @@ namespace Yi.Framework.Ddd.Services //这里判断实体的T,给id赋值 //雪花id - //if (entity is IEntity) - //{ - // //使用反射,暂时先使用sqlsuga的雪花id提供 - // entityWithLongId.Id = SqlSugar.SnowFlakeSingle.Instance.NextId(); - //} + if (entity is IEntity entityForlongId) + { + if (entityForlongId.Id is default(long)) + { + //使用反射,暂时先使用sqlsuga的雪花id提供 + //ps: linshi + ReflexHelper.SetModelValue("Id", SnowflakeHelper.NextId, entity); + } + } return Task.FromResult(entity); @@ -86,6 +91,7 @@ namespace Yi.Framework.Ddd.Services { var entity = await MapToEntityAsync(input); + //这里还可以设置租户 await _repository.InsertAsync(entity); return await MapToGetOutputDtoAsync(entity); diff --git a/src/Yi.Framework/Yi.Framework.Ddd.Application/Services/ReadOnlyAppService.cs b/src/Yi.Framework/Yi.Framework.Ddd.Application/Services/ReadOnlyAppService.cs index b5a1cb60..58ae977c 100644 --- a/src/Yi.Framework/Yi.Framework.Ddd.Application/Services/ReadOnlyAppService.cs +++ b/src/Yi.Framework/Yi.Framework.Ddd.Application/Services/ReadOnlyAppService.cs @@ -1,8 +1,10 @@ -using System; +using Microsoft.Extensions.DependencyInjection; +using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; +using Yi.Framework.Core.Model; using Yi.Framework.Ddd.Dtos; using Yi.Framework.Ddd.Entities; using Yi.Framework.Ddd.Repositories; @@ -30,7 +32,10 @@ where TEntityDto : IEntityDto IReadOnlyAppService where TEntity : class, IEntity { - protected IRepository _repository { get; } + /// + /// 先暂时用服务定位的方式,之后将更改为属性注入 + /// + protected IRepository _repository { get => ServiceLocatorModel.Instance.GetRequiredService>(); } //Mapper protected virtual Task MapToGetOutputDtoAsync(TEntity entity) diff --git a/src/Yi.Framework/Yi.Framework.Ddd.Application/YiFrameworkSwaggerDoc.xml b/src/Yi.Framework/Yi.Framework.Ddd.Application/YiFrameworkSwaggerDoc.xml index 50a29bb6..56826b88 100644 --- a/src/Yi.Framework/Yi.Framework.Ddd.Application/YiFrameworkSwaggerDoc.xml +++ b/src/Yi.Framework/Yi.Framework.Ddd.Application/YiFrameworkSwaggerDoc.xml @@ -28,6 +28,11 @@ + + + 先暂时用服务定位的方式,之后将更改为属性注入 + + 单查 diff --git a/src/Yi.Framework/Yi.Framework.Web/appsettings.json b/src/Yi.Framework/Yi.Framework.Web/appsettings.json index 5489a7bf..6b802969 100644 --- a/src/Yi.Framework/Yi.Framework.Web/appsettings.json +++ b/src/Yi.Framework/Yi.Framework.Web/appsettings.json @@ -10,13 +10,16 @@ //程序启动地址,*代表全部网口 "StartUrl": "http://*:19002", - //数据库列表 + //数据库类型列表 "DbList": [ "Sqlite", "Mysql", "Sqlserver", "Oracle" ], - //数据库类型选择 - "DbSelect": "Sqlite", - //数据库连接地址,支持读写分离 - "DbConn": { - "WriteUrl": "DataSource=yi-sqlsugar-dev.db", + + "DbConnOptions": { + "Url": "DataSource=yi-sqlsugar-dev.db", + "DbType": "Sqlite", + "EnabledDbSeed": false, + "EnabledReadWrite": false, + "EnabledCodeFirst": false, + "EntityAssembly": null, "ReadUrl": [ "DataSource=[xxxx]", //sqlite "server=[xxxx];port=3306;database=[xxxx];user id=[xxxx];password=[xxxx]", //mysql diff --git a/src/Yi.Framework/Yi.Framework.Web/yi-sqlsugar-dev.db b/src/Yi.Framework/Yi.Framework.Web/yi-sqlsugar-dev.db index e69de29b..56b55a0b 100644 Binary files a/src/Yi.Framework/Yi.Framework.Web/yi-sqlsugar-dev.db and b/src/Yi.Framework/Yi.Framework.Web/yi-sqlsugar-dev.db differ