FreeSql 迁移表结构 (非严谨版)

namespace LinCms.Core.Entities;
using FreeSql;

class Program
    {
        static void Main(string[] args)
        {
            // 导出表
            // dotnet tool install -g FreeSql.Generator
            // FreeSql.Generator -Razor 2 -NameOptions 0,0,0,1 -NameSpace LinCms.Core.Entities -DB "Oracle,Data Source=xxxxx"

            // 创建项目
            // dotnet new console -n FreeSqlDbFirstDemo
            // cd FreeSqlDbFirstDemo
            // dotnet add package FreeSql
            // dotnet add package FreeSql.Provider.Sqlite
            // dotnet add package FreeSql.DbFirst
            // dotnet add package Newtonsoft.Json

            // 1. 配置 FreeSql
            var fsql = new FreeSqlBuilder()
                .UseConnectionString(DataType.Sqlite, "Data Source=test.db")
                .UseAutoSyncStructure(true) // 自动同步实体结构到数据库
                .Build();

            // 2. 创建数据库和表
            CreateDatabaseAndTables(fsql);

            Console.WriteLine("程序执行完成!");
        }

        /// <summary>
        /// 创建数据库和表
        /// </summary>
        static void CreateDatabaseAndTables(IFreeSql fsql)
        {
            Console.WriteLine("\n开始创建数据库和表...");
            // 创建数据库(如果不存在)
            fsql.Ado.ExecuteNonQuery("ATTACH DATABASE 'test.db' AS test");
            // 使用实体类创建表
            // find . -name "*.cs" -exec basename {} .cs \;
            // DisableSyncStructure = false 全局替换 DisableSyncStructure = false
            // find . -name "*.cs" -exec sed -i 's/DbType = ".*",//g' {} \;
            // find . -name "*.cs" -exec sed -i 's/DbType = ".*"//g' {} \;
            // find . -name "*.cs" -exec sed -i 's/, )]/ )]/g' {} \;

            fsql.CodeFirst.SyncStructure<ACTIONS>();
            fsql.CodeFirst.SyncStructure<AUTHENTICATION>();
            fsql.CodeFirst.SyncStructure<AUTHENTICATIONBACK>();
            fsql.CodeFirst.SyncStructure<FUNCTIONS>();
            fsql.CodeFirst.SyncStructure<GAMAPPINGS>();
            fsql.CodeFirst.SyncStructure<GFMAPPINGS>();
            fsql.CodeFirst.SyncStructure<GROUPS>();
            fsql.CodeFirst.SyncStructure<LOG>();
            fsql.CodeFirst.SyncStructure<MEMBERSHIP>();
            fsql.CodeFirst.SyncStructure<ORGANIZATION>();
            fsql.CodeFirst.SyncStructure<PFMAPPINGS>();
            fsql.CodeFirst.SyncStructure<PRODUCTS>();
            fsql.CodeFirst.SyncStructure<RAMAPPINGS>();
            fsql.CodeFirst.SyncStructure<RFMAPPINGS>();
            fsql.CodeFirst.SyncStructure<ROLES>();
            fsql.CodeFirst.SyncStructure<ROLETAG>();
            fsql.CodeFirst.SyncStructure<UOMAPPINGS>();
            fsql.CodeFirst.SyncStructure<USERINFO>();
            fsql.CodeFirst.SyncStructure<USERS>();
            fsql.CodeFirst.SyncStructure<USERSINGROUPS>();
            fsql.CodeFirst.SyncStructure<USERSINROLES>();

            Console.WriteLine("数据库和表创建完成!");
        }
    }

posted @ 2025-10-22 10:44  ChasingDreams  阅读(4)  评论(0)    收藏  举报