我尝试过node.js,它对我来说工作得很好。
它将为您创建模型文件。您可以创建多个模型文件
前提条件:安装node.js
需要更改:
在你的工作区中创建index.js文件
在“allTable”中添加你的tables对象(截图中高亮显示)
更改文件夹路径(我已经给出了我的系统路径)
执行命令节点index.js
节点index.js
输出
const fs = require('fs/promises');
async function convertToDataType(dataArray, fileName) {
let count = 0;
let tempArray = [];
var dataTypeArray = [
{
"key": "bigint",
"value": "long"
},
{
"key": "binary",
"value": "byte[]"
},
{
"key": "bit",
"value": "bool"
},
{
"key": "char",
"value": "string"
},
{
"key": "date",
"value": "DateTime"
},
{
"key": "datetime",
"value": "DateTime"
},
{
"key": "datetime2",
"value": "DateTime"
},
{
"key": "datetimeoffset",
"value": "DateTimeOffset"
},
{
"key": "decimal",
"value": "decimal"
},
{
"key": "float",
"value": "double"
},
{
"key": "image",
"value": "byte[]"
},
{
"key": "int",
"value": "int"
},
{
"key": "money",
"value": "decimal"
},
{
"key": "nchar",
"value": "string"
},
{
"key": "ntext",
"value": "string"
},
{
"key": "numeric",
"value": "decimal"
},
{
"key": "nvarchar",
"value": "string"
},
{
"key": "real",
"value": "float"
},
{
"key": "smalldatetime",
"value": "DateTime"
},
{
"key": "smallint",
"value": "short"
},
{
"key": "smallmoney",
"value": "decimal"
},
{
"key": "text",
"value": "string"
},
{
"key": "time",
"value": "TimeSpan"
},
{
"key": "timestamp",
"value": "long"
},
{
"key": "tinyint",
"value": "byte"
},
{
"key": "uniqueidentifier",
"value": "Guid"
},
{
"key": "varbinary",
"value": "byte[]"
},
{
"key": "varchar",
"value": "string"
}
]
dataArray.map(i => {
let objDataType = '';
objDataType = dataTypeArray.filter(data => data.key == i.split(' ')[1].replace('[', '').replace(']', ''))[0].value;
if (objDataType == '') {
count++;
}
let isNull = i.includes('NULL') && !(i.includes('varchar') || i.includes('bit')) ? '?' : '';
isNull = i.includes('NOT NULL') ? '' : isNull;
const varValue = i.split(' ')[0].replace('[', '').replace(']', '');
if (count != 0) {
console.warn(`\n\n\n ======> Error:: Check data type is missing. Datatype => ${i.split(' ')[1]} Object Name: ${fileName} \n\n\n`);
} else {
tempArray.push(`public ${objDataType}${isNull} ${varValue} { get; set; }`);
}
});
return tempArray;
}
async function convertToModel() {
try {
let allTable = {
EmployeeAllowancesHistory: [
"[EmployeeAllowanceHistoryID] [int] NOT NULL",
"[EmployeeID] [int] NOT NULL",
"[AllowanceID] [int] NOT NULL",
"[DateID] [int] NULL",
"[Amount] [numeric] NOT NULL",
"[Insured] [bit] NULL",
"[ChangeDate] [datetime] NOT NULL",
"[NewAmount] [numeric] NULL"
], Cities: [
"[CityID] [int] NOT NULL",
"[CityCode] [varchar] NOT NULL",
"[CityNameAr] [varchar] NULL",
"[CityNameEn] [varchar] NULL",
"[InKSA] [bit] NOT NULL",
"[HighClass] [bit] NOT NULL",
"[TravelDays] [int] NULL"
], Regions: [
"[RegionID] [int] NOT NULL",
"[RegionCode] [nvarchar] NULL",
"[RegionNameEn] [nvarchar] NULL",
"[RegionNameAr] [nvarchar] NULL",
"[CityID] [int] NULL"
]
}
for (var file in allTable) {
const tableObject = await convertToDataType(allTable[file], file);
let tempContent = "[key]";
tableObject.map(obj => {
tempContent = `${tempContent}
${obj}`
});
const content = `using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
namespace Core.Entities
{
public class ${file}
{
${tempContent}
}
}`
fs.writeFile(`/model_files/${file}.cs`, content);
}
console.log('Created successfully...');
} catch (err) {
console.log(err);
}
}
convertToModel();