mirror of
https://gitee.com/dotnetchina/OpenAuth.Net.git
synced 2025-07-15 05:13:25 +08:00
修复表单添加时关联数据库异常
This commit is contained in:
parent
99daa8752f
commit
73b2e2aa08
@ -1,4 +1,4 @@
|
||||
using System;
|
||||
using System;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using Infrastructure;
|
||||
@ -6,7 +6,6 @@ using Newtonsoft.Json.Linq;
|
||||
using OpenAuth.Repository;
|
||||
using OpenAuth.Repository.Interface;
|
||||
using OpenAuth.Repository.QueryObj;
|
||||
|
||||
namespace OpenAuth.App
|
||||
{
|
||||
/// <summary>
|
||||
@ -15,12 +14,10 @@ namespace OpenAuth.App
|
||||
public class DragForm: IForm
|
||||
{
|
||||
private IUnitWork<OpenAuthDBContext> _unitWork;
|
||||
|
||||
public DragForm(IUnitWork<OpenAuthDBContext> unitWork)
|
||||
{
|
||||
_unitWork = unitWork;
|
||||
}
|
||||
|
||||
/**
|
||||
* 功能: 创建表单数据表格(基于sql server)
|
||||
*/
|
||||
@ -30,77 +27,55 @@ namespace OpenAuth.App
|
||||
{
|
||||
// 获取字段并处理
|
||||
var jsonArray = JsonHelper.Instance.Deserialize<JObject>(form.ContentData)["list"];
|
||||
|
||||
// 数据库名称
|
||||
string tableName = form.DbName;
|
||||
|
||||
var exist = _unitWork.FromSql<QueryStringObj>($"select '1' as value from sysobjects where name = '{tableName}' and type = 'U'").SingleOrDefault();
|
||||
if (exist != null) return string.Empty;
|
||||
|
||||
// 创建数据表
|
||||
StringBuilder sql = new StringBuilder($"CREATE TABLE {tableName} ( [Id] varchar(50) COLLATE Chinese_PRC_CI_AS NOT NULL,"); //主键
|
||||
|
||||
string sqlDefault = "";
|
||||
|
||||
foreach (var json in jsonArray)
|
||||
{
|
||||
string type = json["type"].ToString();
|
||||
string name = json["model"].ToString();
|
||||
|
||||
sql.Append("[" + name + "] " + field_type_sql(type)); //字段拼接
|
||||
|
||||
|
||||
if ("checkboxs" == type)
|
||||
sqlDefault += field_type_sql_default(tableName, name, "0");
|
||||
else
|
||||
sqlDefault += field_type_sql_default(tableName, name, "''");
|
||||
}
|
||||
|
||||
sql.Append(");");
|
||||
|
||||
//设置主键
|
||||
sql.Append("ALTER TABLE " + tableName + " ADD CONSTRAINT [PK_" + form.DbName +
|
||||
"] PRIMARY KEY NONCLUSTERED ([Id])");
|
||||
sql.Append(
|
||||
"WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ");
|
||||
sql.Append("ON [PRIMARY];");
|
||||
|
||||
//主键默认值
|
||||
sql.Append("ALTER TABLE " + tableName + " ADD DEFAULT (newid()) FOR [Id];");
|
||||
|
||||
return sql + sqlDefault;
|
||||
}
|
||||
else
|
||||
{
|
||||
// 获取字段并处理
|
||||
var jsonArray = JsonHelper.Instance.Deserialize<JObject>(form.ContentData)["list"];
|
||||
|
||||
// 数据库名称
|
||||
string tableName = form.DbName;
|
||||
|
||||
var exist = _unitWork.FromSql<QueryStringObj>($"select table_name as value from information_schema.tables where table_name ='{tableName}'").SingleOrDefault();
|
||||
if (exist != null) return string.Empty;
|
||||
|
||||
// 创建数据表
|
||||
StringBuilder sql = new StringBuilder("create table if not exists `"
|
||||
+ tableName
|
||||
+ "` ( Id varchar(50) not null primary key,"); //主键
|
||||
|
||||
StringBuilder sql = new StringBuilder($"create table if not exists `{tableName}` ( Id varchar(50) not null primary key,"); //主键
|
||||
foreach (var json in jsonArray)
|
||||
{
|
||||
string type = json["type"].ToString();
|
||||
string name = json["model"].ToString();
|
||||
|
||||
sql.Append("`" + name + "` " + field_type_mysql(type)); //字段拼接
|
||||
|
||||
}
|
||||
|
||||
sql.Append(");");
|
||||
|
||||
return sql.ToString();
|
||||
var result = sql.ToString().TrimEnd(',') + ");";
|
||||
return result;
|
||||
}
|
||||
}
|
||||
|
||||
private string field_type_sql(string leipiplugins)
|
||||
{
|
||||
if ("textarea" == leipiplugins || "listctrl" == leipiplugins)
|
||||
@ -116,7 +91,6 @@ namespace OpenAuth.App
|
||||
return " varchar(255) NULL ,";
|
||||
}
|
||||
}
|
||||
|
||||
private string field_type_mysql(string leipiplugins)
|
||||
{
|
||||
if ("textarea" == leipiplugins || "listctrl" == leipiplugins)
|
||||
@ -132,7 +106,6 @@ namespace OpenAuth.App
|
||||
return " varchar(255) NULL ,";
|
||||
}
|
||||
}
|
||||
|
||||
private string field_type_sql_default(string tablename, string field, string defaultValue)
|
||||
{
|
||||
return "ALTER TABLE " + tablename + " ADD DEFAULT (" + defaultValue + ") FOR [" + field + "];";
|
||||
|
@ -5,16 +5,14 @@ using Newtonsoft.Json.Linq;
|
||||
using OpenAuth.Repository;
|
||||
using OpenAuth.Repository.Interface;
|
||||
using OpenAuth.Repository.QueryObj;
|
||||
|
||||
namespace OpenAuth.App
|
||||
{
|
||||
public class LeipiForm : IForm
|
||||
{
|
||||
private IUnitWork<OpenAuthDBContext> _uniwWork;
|
||||
|
||||
public LeipiForm(IUnitWork<OpenAuthDBContext> uniwWork)
|
||||
private IUnitWork<OpenAuthDBContext> _unitWork;
|
||||
public LeipiForm(IUnitWork<OpenAuthDBContext> unitWork)
|
||||
{
|
||||
_uniwWork = uniwWork;
|
||||
_unitWork = unitWork;
|
||||
}
|
||||
/**
|
||||
* 功能: 创建表单数据表格(基于sql server)
|
||||
@ -25,89 +23,67 @@ namespace OpenAuth.App
|
||||
{
|
||||
// 获取字段并处理
|
||||
var jsonArray = JArray.Parse(form.ContentData);
|
||||
|
||||
// 数据库名称
|
||||
string tableName = form.DbName;
|
||||
var exist = _uniwWork.FromSql<QueryStringObj>($"select '1' as value from sysobjects where name = '{tableName}' and type = 'U'").SingleOrDefault();
|
||||
var exist = _unitWork.FromSql<QueryStringObj>($"select '1' as value from sysobjects where name = '{tableName}' and type = 'U'").SingleOrDefault();
|
||||
if (exist != null) return string.Empty;
|
||||
|
||||
// 创建数据表
|
||||
StringBuilder sql = new StringBuilder($"CREATE TABLE {tableName} ( [Id] varchar(50) COLLATE Chinese_PRC_CI_AS NOT NULL,"); //主键
|
||||
string sqlDefault = "";
|
||||
|
||||
foreach (var json in jsonArray)
|
||||
{
|
||||
string name;
|
||||
string type = json["leipiplugins"].ToString();
|
||||
|
||||
if ("checkboxs" == type)
|
||||
name = json["parse_name"].ToString();
|
||||
else
|
||||
name = json["name"].ToString();
|
||||
|
||||
sql.Append("[" + name + "] " + field_type_sql(type)); //字段拼接
|
||||
|
||||
|
||||
if ("checkboxs" == type)
|
||||
sqlDefault += field_type_sql_default(tableName, name, "0");
|
||||
else
|
||||
sqlDefault += field_type_sql_default(tableName, name, "''");
|
||||
}
|
||||
|
||||
sql.Append(");");
|
||||
|
||||
//设置主键
|
||||
sql.Append("ALTER TABLE " + tableName + " ADD CONSTRAINT [PK_" + form.DbName +
|
||||
"] PRIMARY KEY NONCLUSTERED ([Id])");
|
||||
sql.Append(
|
||||
"WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ");
|
||||
sql.Append("ON [PRIMARY];");
|
||||
|
||||
//主键默认值
|
||||
sql.Append("ALTER TABLE " + tableName + " ADD DEFAULT (newid()) FOR [Id];");
|
||||
|
||||
return sql + sqlDefault;
|
||||
}
|
||||
else
|
||||
{
|
||||
// 获取字段并处理
|
||||
var jsonArray = JArray.Parse(form.ContentData);
|
||||
|
||||
// 数据库名称
|
||||
string tableName = form.DbName;
|
||||
var exist = _uniwWork.FromSql<QueryStringObj>($"select table_name as value from information_schema.tables where table_name ='{tableName}'").SingleOrDefault();
|
||||
var exist = _unitWork.FromSql<QueryStringObj>($"select table_name as value from information_schema.tables where table_name ='{tableName}'").SingleOrDefault();
|
||||
if (exist != null) return string.Empty;
|
||||
|
||||
// 创建数据表
|
||||
StringBuilder sql = new StringBuilder("create table if not exists `"
|
||||
+ tableName
|
||||
+ "` ( Id varchar(50) not null primary key,"); //主键
|
||||
|
||||
StringBuilder sql = new StringBuilder($"create table if not exists `{tableName}` ( Id varchar(50) not null primary key,"); //主键
|
||||
foreach (var json in jsonArray)
|
||||
{
|
||||
string name;
|
||||
string type = json["leipiplugins"].ToString();
|
||||
|
||||
if ("checkboxs" == type)
|
||||
name = json["parse_name"].ToString();
|
||||
else
|
||||
name = json["name"].ToString();
|
||||
|
||||
sql.Append("`" + name + "` " + field_type_mysql(type)); //字段拼接
|
||||
|
||||
//
|
||||
// if ("checkboxs" == type)
|
||||
// sqlDefault += field_type_sql_default(tableName, name, "0");
|
||||
// else
|
||||
// sqlDefault += field_type_sql_default(tableName, name, "''");
|
||||
}
|
||||
|
||||
sql.Append(");");
|
||||
|
||||
return sql.ToString();
|
||||
var result = sql.ToString().TrimEnd(',') + ");";
|
||||
return result;
|
||||
}
|
||||
}
|
||||
|
||||
private string field_type_sql(string leipiplugins)
|
||||
{
|
||||
if ("textarea" == leipiplugins || "listctrl" == leipiplugins)
|
||||
@ -123,7 +99,6 @@ namespace OpenAuth.App
|
||||
return " varchar(255) NULL ,";
|
||||
}
|
||||
}
|
||||
|
||||
private string field_type_mysql(string leipiplugins)
|
||||
{
|
||||
if ("textarea" == leipiplugins || "listctrl" == leipiplugins)
|
||||
@ -139,7 +114,6 @@ namespace OpenAuth.App
|
||||
return " varchar(255) NULL ,";
|
||||
}
|
||||
}
|
||||
|
||||
private string field_type_sql_default(string tablename, string field, string defaultValue)
|
||||
{
|
||||
return "ALTER TABLE " + tablename + " ADD DEFAULT (" + defaultValue + ") FOR [" + field + "];";
|
||||
|
@ -56,5 +56,18 @@ namespace OpenAuth.App.Test
|
||||
FrmType = 2
|
||||
});
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void Add()
|
||||
{
|
||||
var app = _autofacServiceProvider.GetService<FormApp>();
|
||||
app.Add(new Form()
|
||||
{
|
||||
ContentData = "{\"list\":[{\"type\":\"input\",\"icon\":\"icon-input\",\"name\":\"单行文本\",\"options\":{\"width\":\"100%\",\"defaultValue\":\"\",\"required\":false,\"dataType\":\"string\",\"pattern\":\"\",\"placeholder\":\"\",\"disabled\":false,\"remoteFunc\":\"func_1642578757000_60891\"},\"key\":\"1642578757000_60891\",\"model\":\"input_1642578757000_60891\",\"rules\":[{\"type\":\"string\",\"message\":\"input_1642578757000_60891格式不正确\"}]}],\"config\":{\"labelWidth\":100,\"labelPosition\":\"right\",\"size\":\"small\"}}",
|
||||
DbName = "stock2",
|
||||
OrgId = "08f41bf6-4388-4b1e-bd3e-2ff538b44b1b",
|
||||
FrmType = 2
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user