namespace HStation.Service.Assets
{
///
///
///
public class DbFirstHelper
{
///
/// 初始化
///
public static bool Initial(out string msg)
{
msg = string.Empty;
try
{
var connectConfig = HStation.Assets.ConfigHelper.DefaultConnectionConfig;
if (connectConfig == null)
{
msg = "连接配置初始化失败";
return false;
}
connectConfig.ConfigureExternalServices = new ConfigureExternalServices()
{
EntityService = (property, column) =>
{
//除主键外其他列都可空
if (!column.IsPrimarykey)
{
column.IsNullable = true;
}
if (column.DataType == StaticConfig.CodeFirst_BigString)
{
if (Settings.AssetsParasHelper.Assets.DataBase.DbType == HStation.Assets.DbType.PostgreSql)
{
column.DataType = "character varying";
}
}
}
};
var typeList = new List()
{
typeof(Entity.AssetsPumpGroup),
typeof(Entity.AssetsPumpGroupAndMainMapping),
typeof(Entity.AssetsPumpMain),
typeof(Entity.AssetsPumpMainAndPartMapping),
typeof(Entity.AssetsPumpPartMain),
typeof(Entity.AssetsPumpPropContent),
typeof(Entity.AssetsPumpSeries),
typeof(Entity.AssetsPumpType),
typeof(Entity.AssetsPumpSeriesTypeMapping),
typeof(Entity.AssetsPumpSeriesManufacturerMapping),
//阀门
typeof(Entity.AssetsValveMain),
typeof(Entity.AssetsValveSeries),
typeof(Entity.AssetsValveCoefficient),
//弯头
typeof(Entity.AssetsElbowMain),
typeof(Entity.AssetsElbowSeries),
typeof(Entity.AssetsElbowCoefficient),
//三通
typeof(Entity.AssetsThreelinkMain),
typeof(Entity.AssetsThreelinkSeries),
typeof(Entity.AssetsThreelinkCoefficient),
//四通
typeof(Entity.AssetsFourlinkMain),
typeof(Entity.AssetsFourlinkSeries),
typeof(Entity.AssetsFourlinkCoefficient),
//管道
typeof(Entity.AssetsPipeMain),
typeof(Entity.AssetsPipeSeries),
typeof(Entity.AssetsPipeCoefficient),
//喷头
typeof(Entity.AssetsSprinklerMain),
typeof(Entity.AssetsSprinklerSeries),
typeof(Entity.AssetsSprinklerCoefficient),
//厂商
typeof(Entity.AssetsManufacturer),
typeof(Entity.AssetsManufacturerSeries),
//自定义
typeof(Entity.AssetsUserDefined),
//空压机
typeof(Entity.AssetsExchangerMain),
typeof(Entity.AssetsExchangerMainAndPartMapping),
typeof(Entity.AssetsExchangerPartMain),
typeof(Entity.AssetsExchangerPropContent),
typeof(Entity.AssetsExchangerSeries),
typeof(Entity.AssetsExchangerCoefficient),
//换热器
typeof(Entity.AssetsCompressorPartMain),
typeof(Entity.AssetsCompressorMain),
typeof(Entity.AssetsCompressorMainAndPartMapping),
typeof(Entity.AssetsCompressorPropContent),
typeof(Entity.AssetsCompressorSeries),
typeof(Entity.AssetsCompressorCoefficient),
//成套设备
typeof(Entity.AssetsPackageMain),
typeof(Entity.AssetsPackagePumpMapping),
typeof(Entity.AssetsPackageSeries),
typeof(Entity.AssetsPackageMfrMapping),
typeof(Entity.AssetsPackagePartMain),
typeof(Entity.AssetsPackageMainAndPartMapping),
typeof(Entity.AssetsPackagePropContent),
//闷头
typeof(Entity.AssetsBluntheadMain),
typeof(Entity.AssetsBluntheadSeries),
typeof(Entity.AssetsBluntheadCoefficient),
//水池
typeof(Entity.AssetsTankMain),
typeof(Entity.AssetsTankSeries),
typeof(Entity.AssetsTankCoefficient),
//水表
typeof(Entity.AssetsMeterMain),
typeof(Entity.AssetsMeterSeries),
typeof(Entity.AssetsMeterCoefficient),
//流量计
typeof(Entity.AssetsFlowmeterMain),
typeof(Entity.AssetsFlowmeterSeries),
typeof(Entity.AssetsFlowmeterCoefficient),
//消火栓
typeof(Entity.AssetsHydrantMain),
typeof(Entity.AssetsHydrantSeries),
typeof(Entity.AssetsHydrantCoefficient),
//压力表
typeof(Entity.AssetsPressmeterMain),
typeof(Entity.AssetsPressmeterSeries),
typeof(Entity.AssetsPressmeterCoefficient),
//过渡件
typeof(Entity.AssetsTranslationMain),
typeof(Entity.AssetsTranslationSeries),
typeof(Entity.AssetsTranslationCoefficient),
};
using (var db = new SqlSugarClient(connectConfig))
{
//设置字符串默认长度
//db.CodeFirst.SetStringDefaultLength(250);
//db.CodeFirst.SetStringDefaultLength(int.MaxValue);
//建库:如果不存在创建数据库存在不会重复创建 createdb;注意 :Oracle和个别国产库需不支持该方法,需要手动建库
db.DbMaintenance.CreateDatabase();
db.CodeFirst.InitTables
(
typeList.ToArray()
);
}
return true;
}
catch (Exception ex)
{
msg = ex.Message;
return false;
}
}
}
}