From a8d1db861488f8fe81966f936c35a8b4f3961aa9 Mon Sep 17 00:00:00 2001
From: 28810 <28810@YEXIANGQIN>
Date: Wed, 29 Jul 2020 13:19:47 +0800
Subject: [PATCH] =?UTF-8?q?-=20=E8=B0=83=E6=95=B4=20ColumnAttribute=20IsNu?=
=?UTF-8?q?llable=20=E5=AF=B9=20int/long=20=E7=AD=89=E5=80=BC=E7=B1=BB?=
=?UTF-8?q?=E5=9E=8B=E4=B9=9F=E5=8F=AF=E7=94=9F=E6=95=88=EF=BC=9B#384?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
Examples/base_entity/Program.cs | 2 ++
Examples/base_entity/Test01/User.cs | 9 ++++++---
.../FreeSql.Tests/MsAccess/MsAccessCodeFirstTest.cs | 2 +-
FreeSql/Internal/UtilsExpressionTree.cs | 4 ++++
4 files changed, 13 insertions(+), 4 deletions(-)
diff --git a/Examples/base_entity/Program.cs b/Examples/base_entity/Program.cs
index 311f0383..502f11dd 100644
--- a/Examples/base_entity/Program.cs
+++ b/Examples/base_entity/Program.cs
@@ -97,6 +97,8 @@ namespace base_entity
BaseEntity.Initialization(fsql, () => _asyncUow.Value);
#endregion
+ var sql = fsql.CodeFirst.GetComparisonDDLStatements(typeof(EMSServerModel.Model.User), "testxsx001");
+
var test01 = EMSServerModel.Model.User.Select.IncludeMany(a => a.Roles).ToList();
var test02 = EMSServerModel.Model.UserRole.Select.ToList();
var test01tb = EMSServerModel.Model.User.Orm.CodeFirst.GetTableByEntity(typeof(EMSServerModel.Model.User));
diff --git a/Examples/base_entity/Test01/User.cs b/Examples/base_entity/Test01/User.cs
index be4fbeb2..e790301c 100644
--- a/Examples/base_entity/Test01/User.cs
+++ b/Examples/base_entity/Test01/User.cs
@@ -94,10 +94,13 @@ namespace EMSServerModel.Model
///
/// 职务编号
///
- [JsonProperty]
- public long? TitleId { get; set; }
+ [JsonProperty, Column(IsNullable = true)]
+ public long TitleId { get; set; }
+
+ [JsonProperty]
+ public long TitleId2 { get; set; }
+
-
/////
///// 创建时间
/////
diff --git a/FreeSql.Tests/FreeSql.Tests/MsAccess/MsAccessCodeFirstTest.cs b/FreeSql.Tests/FreeSql.Tests/MsAccess/MsAccessCodeFirstTest.cs
index 622c63d3..5a6a3941 100644
--- a/FreeSql.Tests/FreeSql.Tests/MsAccess/MsAccessCodeFirstTest.cs
+++ b/FreeSql.Tests/FreeSql.Tests/MsAccess/MsAccessCodeFirstTest.cs
@@ -245,7 +245,7 @@ namespace FreeSql.Tests.MsAccess
var itemstb = select.ToDataTable();
}
- [Table(Name = "tb_alltype")]
+ [Table(Name = "tb_alltype_insert")]
class TableAllType
{
[Column(IsIdentity = true, IsPrimary = true)]
diff --git a/FreeSql/Internal/UtilsExpressionTree.cs b/FreeSql/Internal/UtilsExpressionTree.cs
index e9f4d453..a499e1ff 100644
--- a/FreeSql/Internal/UtilsExpressionTree.cs
+++ b/FreeSql/Internal/UtilsExpressionTree.cs
@@ -101,6 +101,8 @@ namespace FreeSql.Internal
continue;
}
if (tp == null && colattr != null) colattr.IsIgnore = true; //无法匹配的属性,认定是导航属性,且自动过滤
+ var colattrIsNullable = colattr?._IsNullable;
+ var colattrIsNull = colattr == null;
if (colattr == null)
colattr = new ColumnAttribute
{
@@ -119,6 +121,8 @@ namespace FreeSql.Internal
else
colattr.DbType = colattr.DbType.ToUpper();
+ if (colattrIsNull == false && colattrIsNullable == true) colattr.DbType = colattr.DbType.Replace("NOT NULL", "");
+ if (colattrIsNull == false && colattrIsNullable == false) colattr.DbType = Regex.Replace(colattr.DbType, @"\bNULL\b", "").Trim() + " NOT NULL";
if (colattr._IsNullable == null && tp != null && tp.isnullable == null) colattr.IsNullable = tp.dbtypeFull.Contains("NOT NULL") == false;
if (colattr.DbType?.Contains("NOT NULL") == true) colattr.IsNullable = false;
if (string.IsNullOrEmpty(colattr.Name)) colattr.Name = p.Name;