CodeGen/Builders/CodeBuilderDomainModel.cs

(开头部分) 14KB

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

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using System.Data.Common;
using System.IO;


using ComLib;
using ComLib.OrmLite;
using ComLib.Reflection;
using ComLib.Collections;
using ComLib.Models;



namespace ComLib.CodeGeneration
{
    /// <summary>
    /// Code Builder Domain Model.
    /// </summary>
    public class CodeBuilderDomain : CodeBuilderBase, ICodeBuilder
    {
        /// <summary>
        /// Get/set the model context.
        /// </summary>
        public ModelContext Context { get; set; }


        #region ICodeBuilder Members
        /// <summary>
        /// Builds the Domain model code which includes :
        /// 1. Entity.
        /// 2. ActiveRecord
        /// 3. Service 
        /// 4. Repository
        /// 5. Settings
        /// 6. Validator
        /// </summary>
        /// <param name="ctx"></param>
        /// <returns></returns>
        public virtual BoolMessageItem<ModelContainer> Process(ModelContext ctx)
        {
            string codeTemplatePath = ctx.AllModels.Settings.ModelCodeLocationTemplate;
            this.Context = ctx;
            Dictionary<string, CodeFile> fileMap = CodeBuilderUtils.GetFiles(ctx, string.Empty, codeTemplatePath);

            ctx.AllModels.Iterate(m => ctx.CanProcess(m, (model) => model.GenerateCode), currentModel =>
            {
                var modelChain = ctx.AllModels.InheritanceFor(currentModel.Name);
                fileMap = CodeFileHelper.GetFilteredDomainModelFiles(currentModel, fileMap);
                string generatedCodePath = (string)ctx.AllModels.Settings.ModelCodeLocation;
                generatedCodePath += "/" + currentModel.Name;
                IDictionary<string, string> subs = new Dictionary<string, string>();
                BuildSubstitutions(ctx, currentModel, modelChain, subs);

                foreach (string fileName in fileMap.Keys)
                {
                    string templateFile = codeTemplatePath + "/" + fileName;
后面还有 311 行代码,解锁后查看完整代码

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

AI 解读

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

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