From e3d526ec6d4bf244249e5c5d87d78722f038609b Mon Sep 17 00:00:00 2001 From: 2881099 <2881099@qq.com> Date: Fri, 2 Dec 2022 22:13:35 +0800 Subject: [PATCH] =?UTF-8?q?-=20=E4=BF=AE=E5=A4=8D=20Firebird=20CodeFirst.S?= =?UTF-8?q?yncStructure=20=E8=87=AA=E5=A2=9E=E9=94=99=E8=AF=AF=EF=BC=9Bd15?= =?UTF-8?q?4a463a5d239c0a4ce848f2ac9c75dca84ec55?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Examples/base_entity/Entities/User.cs | 9 +++++++++ Examples/base_entity/Program.cs | 6 ++++-- Extensions/FreeSql.Generator/ConsoleApp.cs | 18 +++++++++++++++++- FreeSql/Internal/UtilsExpressionTree.cs | 4 +++- 4 files changed, 33 insertions(+), 4 deletions(-) diff --git a/Examples/base_entity/Entities/User.cs b/Examples/base_entity/Entities/User.cs index 3b8270ec..faf9a460 100644 --- a/Examples/base_entity/Entities/User.cs +++ b/Examples/base_entity/Entities/User.cs @@ -1,4 +1,5 @@ using FreeSql; +using FreeSql.DataAnnotations; using System; using System.Collections.Generic; using System.ComponentModel.DataAnnotations; @@ -57,3 +58,11 @@ public class User1 : BaseEntity [MaxLength(4000)] public string Description { get; set; } } + +public class IdentityTable +{ + [Column(IsIdentity = true, IsPrimary = true)] + public int id { get; set; } + + public string name { get; set; } +} \ No newline at end of file diff --git a/Examples/base_entity/Program.cs b/Examples/base_entity/Program.cs index ba879bbc..c42c7c65 100644 --- a/Examples/base_entity/Program.cs +++ b/Examples/base_entity/Program.cs @@ -451,10 +451,10 @@ namespace base_entity //.UseSlaveWeight(10, 1, 1, 5) - //.UseConnectionString(FreeSql.DataType.Firebird, @"database=localhost:D:\fbdata\EXAMPLES.fdb;user=sysdba;password=123456;max pool size=5") + .UseConnectionString(FreeSql.DataType.Firebird, @"database=localhost:D:\fbdata\EXAMPLES.fdb;user=sysdba;password=123456;max pool size=5") - .UseConnectionString(FreeSql.DataType.MySql, "Data Source=127.0.0.1;Port=3306;User ID=root;Password=root;Initial Catalog=cccddd;Charset=utf8;SslMode=none;min pool size=1;Max pool size=2") + //.UseConnectionString(FreeSql.DataType.MySql, "Data Source=127.0.0.1;Port=3306;User ID=root;Password=root;Initial Catalog=cccddd;Charset=utf8;SslMode=none;min pool size=1;Max pool size=2") //.UseConnectionString(FreeSql.DataType.SqlServer, "Data Source=.;Integrated Security=True;Initial Catalog=freesqlTest;Pooling=true;Max Pool Size=3;TrustServerCertificate=true") @@ -487,6 +487,8 @@ namespace base_entity BaseEntity.Initialization(fsql, () => _asyncUow.Value); #endregion + fsql.Select().Count(); + var dkdksql = fsql.Select().WithLock().From() .InnerJoin((user, usergroup) => user.GroupId == usergroup.Id && usergroup.GroupName == "xxx") .ToSql(); diff --git a/Extensions/FreeSql.Generator/ConsoleApp.cs b/Extensions/FreeSql.Generator/ConsoleApp.cs index 92530b50..50050d10 100644 --- a/Extensions/FreeSql.Generator/ConsoleApp.cs +++ b/Extensions/FreeSql.Generator/ConsoleApp.cs @@ -22,6 +22,7 @@ namespace FreeSql.Generator string ArgsConnectionString { get; } string ArgsFilter { get; } string ArgsMatch { get; } + string ArgsJson { get; } string ArgsFileName { get; } bool ArgsReadKey { get; } internal string ArgsOutput { get; private set; } @@ -62,6 +63,7 @@ new Colorful.Formatter("v" + string.Join(".", typeof(ConsoleApp).Assembly.GetNam ArgsNameSpace = "MyProject"; ArgsFilter = ""; ArgsMatch = ""; + ArgsJson = "Newtonsoft.Json"; ArgsFileName = "{name}.cs"; ArgsReadKey = true; Action setArgsOutput = value => @@ -94,7 +96,7 @@ new Colorful.Formatter("v" + string.Join(".", typeof(ConsoleApp).Assembly.GetNam -NameOptions * 4个布尔值对应: 首字母大写 - 首字母大写,其他小写 + 首字母大写,其他小写 全部小写 下划线转驼峰 @@ -116,6 +118,8 @@ new Colorful.Formatter("v" + string.Join(".", typeof(ConsoleApp).Assembly.GetNam 如果不想生成视图和存储过程 -Filter View+StoreProcedure -Match 表名或正则表达式,只生成匹配的表,如:dbo\.TB_.+ + -Json NTJ、STJ、NONE + Newtonsoft.Json、System.Text.Json、不生成 -FileName 文件名,默认:{name}.cs -Output 保存路径,默认为当前 shell 所在目录 @@ -196,6 +200,18 @@ new Colorful.Formatter("推荐在实体类目录创建 gen.bat,双击它重新 if (Regex.IsMatch("", ArgsMatch)) { } //throw a++; break; + case "-json": + switch(args[a + 1].Trim().ToLower()) + { + case "none": + ArgsJson = ""; + break; + case "stj": + ArgsJson = "System.Text.Json"; + break; + } + a++; + break; case "-filename": ArgsFileName = args[a + 1]; a++; diff --git a/FreeSql/Internal/UtilsExpressionTree.cs b/FreeSql/Internal/UtilsExpressionTree.cs index 023e8c31..2f2b3f27 100644 --- a/FreeSql/Internal/UtilsExpressionTree.cs +++ b/FreeSql/Internal/UtilsExpressionTree.cs @@ -516,7 +516,9 @@ namespace FreeSql.Internal foreach (var col in trytb.Primarys) { col.Attribute.IsNullable = false; - col.Attribute.DbType = col.Attribute.DbType.Replace("NOT NULL", "").Replace(" NULL", "").Trim() + " NOT NULL"; //sqlite 主键也可以插入 null + col.Attribute.DbType = col.Attribute.DbType.Replace("NOT NULL", "").Replace(" NULL", "").Trim(); + if (common._orm.Ado.DataType == DataType.Sqlite) + col.Attribute.DbType += " NOT NULL"; //sqlite 主键也可以插入 null } foreach (var col in trytb.Columns.Values) {