Sfoglia il codice sorgente

代码生成,生成代码配置项,数据库实体程序集名称集合,存放到AppConfig配置文件中,通过option读取。
解决问题:
1.方便修改
2.如果项目中只引用Admin.NET.Core而不引用Application则代码生成报错,报错原因是应为程序集名称在代码中写死,通过修改配置文件来修改配置无疑是比较方便的

kenny 3 anni fa
parent
commit
4b613c7592

+ 4 - 0
Admin.NET/Admin.NET.Application/AppConfig.json

@@ -36,5 +36,9 @@
     "WechatRefundUrl": "/notify/weChatPay/refund", //微信退款回调
     "AlipayUrl": "", //支付宝支付回调
     "AlipayRefundUrl": "" //支付宝退款回调
+  },
+  //生成代码配置项
+  "CodeGen": {
+    "EntityAssemblyNames": [ "Admin.NET.Core", "Admin.NET.Application" ] //数据库实体程序集名称集合
   }
 }

+ 0 - 4
Admin.NET/Admin.NET.Core/Const/CommonConst.cs

@@ -30,8 +30,4 @@ public class CommonConst
     /// </summary>
     public const string SysOpLogFlag = "sys_op_log";
 
-    /// <summary>
-    /// 实体所在程序集-代码生成
-    /// </summary>
-    public static string[] EntityAssemblyName = new string[] { "Admin.NET.Core", "Admin.NET.Application" };
 }

+ 14 - 0
Admin.NET/Admin.NET.Core/Option/CodeGenOptions.cs

@@ -0,0 +1,14 @@
+
+namespace Admin.NET.Core
+{
+    /// <summary>
+    /// 代码生成配置选项
+    /// </summary>
+    public class CodeGenOptions : IConfigurableOptions
+    {
+        /// <summary>
+        /// 数据库实体程序集名称集合
+        /// </summary>
+        public List<string> EntityAssemblyNames { get; set; }
+    }
+}

+ 9 - 4
Admin.NET/Admin.NET.Core/Service/Common/CommonService.cs

@@ -3,10 +3,12 @@
 public class CommonService : ICommonService, IScoped
 {
     private readonly IHttpContextAccessor _httpContextAccessor;
+    private readonly CodeGenOptions _codeGenOptions;
 
-    public CommonService(IHttpContextAccessor httpContextAccessor)
+    public CommonService(IHttpContextAccessor httpContextAccessor, IOptions<CodeGenOptions> codeGenOptions)
     {
         _httpContextAccessor = httpContextAccessor;
+        _codeGenOptions = codeGenOptions.Value;
     }
 
     /// <summary>
@@ -20,10 +22,13 @@ public class CommonService : ICommonService, IScoped
         var type = typeof(SugarTable);
         var type1 = typeof(NotTableAttribute);
         var types = new List<Type>();
-        foreach (var assemblyName in CommonConst.EntityAssemblyName)
+        if (_codeGenOptions.EntityAssemblyNames != null)
         {
-            Assembly asm = Assembly.Load(assemblyName);
-            types.AddRange(asm.GetExportedTypes().ToList());
+            foreach (var assemblyName in _codeGenOptions.EntityAssemblyNames)
+            {
+                Assembly asm = Assembly.Load(assemblyName);
+                types.AddRange(asm.GetExportedTypes().ToList());
+            }
         }
         Func<Attribute[], bool> IsMyAttribute = o =>
         {

+ 1 - 0
Admin.NET/Admin.NET.Web.Core/Startup.cs

@@ -27,6 +27,7 @@ namespace Admin.NET.Web.Core
             services.AddConfigurableOptions<WechatOptions>();
             services.AddConfigurableOptions<WechatPayOptions>();
             services.AddConfigurableOptions<PayCallBackOptions>();
+            services.AddConfigurableOptions<CodeGenOptions>();
 
             services.AddSqlSugarSetup(App.Configuration);