src/Czar.Cms.Core/CodeGenerator/CodeGenerator.cs
(开头部分) 14KB这里只显示每个文件的开头 60 行。登录后可以解锁完整代码。
using Czar.Cms.Core.Models;
using Czar.Cms.Core.Options;
using Microsoft.Extensions.Options;
using System;
using System.Collections.Generic;
using System.Data.SqlClient;
using System.IO;
using System.Linq;
using System.Reflection;
using System.Text;
using Czar.Cms.Core.Extensions;
using System.Data;
using Dapper;
using System.Threading.Tasks;
using System.Data.SqlTypes;
using Czar.Cms.Core.DbHelper;
namespace Czar.Cms.Core.CodeGenerator
{
/// <summary>
/// yilezhu
/// 2018.12.12
/// 代码生成器。参考自:Zxw.Framework.NetCore
/// <remarks>
/// 根据数据库表以及表对应的列生成对应的数据库实体
/// </remarks>
/// </summary>
public class CodeGenerator
{
private readonly string Delimiter = "\\";//分隔符,默认为windows下的\\分隔符
private static CodeGenerateOption _options;
public CodeGenerator(IOptions<CodeGenerateOption> options)
{
if (options == null)
throw new ArgumentNullException(nameof(options));
_options = options.Value;
if (_options.ConnectionString.IsNullOrWhiteSpace())
throw new ArgumentNullException("不指定数据库连接串就生成代码,你想上天吗?");
if (_options.DbType.IsNullOrWhiteSpace())
throw new ArgumentNullException("不指定数据库类型就生成代码,你想逆天吗?");
var path = AppDomain.CurrentDomain.BaseDirectory;
if (_options.OutputPath.IsNullOrWhiteSpace())
_options.OutputPath = path;
var flag = path.IndexOf("/bin");
if (flag > 0)
Delimiter = "/";//如果可以取到值,修改分割符
}
/// <summary>
/// 根据数据库连接字符串生成数据库表对应的模板代码
/// </summary>
/// <param name="isCoveredExsited">是否覆盖已存在的同名文件</param>
public void GenerateTemplateCodesFromDatabase(bool isCoveredExsited = true)
{
DatabaseType dbType = ConnectionFactory.GetDataBaseType(_options.DbType);
List<DbTable> tables = new List<DbTable>();
using (var dbConnection = ConnectionFactory.CreateConnection(dbType, _options.ConnectionString))
{
tables = dbConnection.GetCurrentDatabaseTableList(dbType);
后面还有 289 行代码,解锁后查看完整代码
24 小时内免费解锁 3 个项目,之后 1 积分/个。 规则说明
AI 解读
登录后可用,每次 10 积分,解读结果公开显示在下面。
还没有人解读过这个文件。
