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;