Common/Gardener.Common/GenerateSeedDataTool.cs

(开头部分) 4KB

这里只显示每个文件的开头 60 行。登录后可以解锁完整代码。

// -----------------------------------------------------------------------------
// 园丁,是个很简单的管理系统
//  gitee:https://gitee.com/hgflydream/Gardener 
//  issues:https://gitee.com/hgflydream/Gardener/issues 
// -----------------------------------------------------------------------------

using System;
using System.Collections.Generic;
using System.Linq;
using System.Reflection;
using System.Text;

namespace Gardener.Common
{
    /// <summary>
    /// 生成种子数据工具
    /// </summary>
    public static class SeedDataGenerateTool
    {
        /// <summary>
        /// 生成种子数据
        /// </summary>
        /// <param name="request"></param>
        /// <param name="entityName"></param>
        /// <returns></returns>
        /// <remarks>
        /// 根据搜索条叫生成种子数据
        /// </remarks>
        public static string Generate<TEntity>(IEnumerable<TEntity> datas,string? entityName=null)
        {
            if (datas==null || !datas.Any())
            {
                return string.Empty;
            }
            entityName = entityName ?? typeof(TEntity).Name;
            StringBuilder sb = new StringBuilder();
            sb.AppendLine("/// <summary>");
            sb.AppendLine("/// 种子数据");
            sb.AppendLine("/// </summary>");
            sb.AppendLine($"public class {entityName}SeedData : IEntitySeedData<{entityName}>");
            sb.AppendLine("{");
            sb.AppendLine("     /// <summary>");
            sb.AppendLine("     /// 种子数据");
            sb.AppendLine("     /// </summary>");
            sb.AppendLine("     /// <param name=\"dbContext\"></param>");
            sb.AppendLine("     /// <param name=\"dbContextLocator\"></param>");
            sb.AppendLine("     /// <returns></returns>");
            sb.AppendLine($"    public IEnumerable<{entityName}> HasData(DbContext dbContext, Type dbContextLocator)");
            sb.AppendLine("     {");
            sb.AppendLine("         return new[]{");

            foreach (var item in datas)
            {
                if (item == null) { continue; }
                Type type = item.GetType();
                PropertyInfo[] properties = type.GetProperties(BindingFlags.Public | BindingFlags.Instance);
                sb.Append($"                new {entityName}()");
                sb.Append(" {");
                foreach (PropertyInfo property in properties)
                {
后面还有 58 行代码,解锁后查看完整代码

24 小时内免费解锁 3 个项目,之后 1 积分/个。 规则说明

AI 解读

登录后可用,每次 10 积分,解读结果公开显示在下面。

还没有人解读过这个文件。