Internal optimization

This commit is contained in:
2881099 2022-05-25 13:46:33 +08:00
parent 27cb11e4a7
commit 71ba136e08
5 changed files with 65 additions and 2 deletions

View File

@ -172,6 +172,14 @@ namespace base_entity
public CommandTimeoutCascade(int timeout) => _asyncLocalTimeout.Value = timeout;
public void Dispose() => _asyncLocalTimeout.Value = 0;
}
class EnterpriseInfo
{
[Column(IsPrimary = true, DbType = "varchar(60)")]
public string id { get; set; }
[Column(DbType = "varchar(128)")]
public string img { get; set; }
}
static void Main(string[] args)
{
#region IFreeSql
@ -217,6 +225,8 @@ namespace base_entity
BaseEntity.Initialization(fsql, () => _asyncUow.Value);
#endregion
var sql122234 = fsql.CodeFirst.GetComparisonDDLStatements<EnterpriseInfo>();
if (fsql.Ado.DataType == DataType.PostgreSQL)
{
fsql.CodeFirst.IsNoneCommandParameter = false;

View File

@ -3,11 +3,23 @@ using System.Linq;
namespace FreeSql.DataAnnotations
{
/// <summary>
/// OneToOne[Navigate(nameof(Primary))] &lt;-&gt; (缺省)外表.Primary<para></para>
/// ManyToOneTopic.cs 文件 [Navigate(nameof(Topic.CategoryId))] &lt;-&gt; (缺省)Category.Id<para></para>
/// _________________public Category Category { get; set; }<para></para>
/// OneToManyCategory.cs 文件 (缺省)Category.Id &lt;-&gt; [Navigate(nameof(Topic.CategoryId))]<para></para>
/// _________________public List&lt;Topic&gt; Topics { get; set; }<para></para>
/// </summary>
public class NavigateAttribute : Attribute
{
/// <summary>
/// 手工绑定 OneToMany、ManyToOne 导航关系
/// OneToOne[Navigate(nameof(Primary))] &lt;-&gt; (缺省)外表.Primary<para></para>
/// ManyToOneTopic.cs 文件 [Navigate(nameof(Topic.CategoryId))] &lt;-&gt; (缺省)Category.Id<para></para>
/// _________________public Category Category { get; set; }<para></para>
/// OneToManyCategory.cs 文件 (缺省)Category.Id &lt;-&gt; [Navigate(nameof(Topic.CategoryId))]<para></para>
/// _________________public List&lt;Topic&gt; Topics { get; set; }<para></para>
/// </summary>
public string Bind { get; set; }
/// <summary>
@ -15,6 +27,13 @@ namespace FreeSql.DataAnnotations
/// </summary>
public Type ManyToMany { get; set; }
/// <summary>
/// OneToOne[Navigate(nameof(Primary))] &lt;-&gt; (缺省)外表.Primary<para></para>
/// ManyToOneTopic.cs 文件 [Navigate(nameof(Topic.CategoryId))] &lt;-&gt; (缺省)Category.Id<para></para>
/// _________________public Category Category { get; set; }<para></para>
/// OneToManyCategory.cs 文件 (缺省)Category.Id &lt;-&gt; [Navigate(nameof(Topic.CategoryId))]<para></para>
/// _________________public List&lt;Topic&gt; Topics { get; set; }<para></para>
/// </summary>
public NavigateAttribute(string bind)
{
this.Bind = bind;

View File

@ -367,9 +367,22 @@
是否唯一
</summary>
</member>
<member name="T:FreeSql.DataAnnotations.NavigateAttribute">
<summary>
OneToOne[Navigate(nameof(Primary))] &lt;-&gt; (缺省)外表.Primary<para></para>
ManyToOneTopic.cs 文件 [Navigate(nameof(Topic.CategoryId))] &lt;-&gt; (缺省)Category.Id<para></para>
_________________public Category Category { get; set; }<para></para>
OneToManyCategory.cs 文件 (缺省)Category.Id &lt;-&gt; [Navigate(nameof(Topic.CategoryId))]<para></para>
_________________public List&lt;Topic&gt; Topics { get; set; }<para></para>
</summary>
</member>
<member name="P:FreeSql.DataAnnotations.NavigateAttribute.Bind">
<summary>
手工绑定 OneToMany、ManyToOne 导航关系
OneToOne[Navigate(nameof(Primary))] &lt;-&gt; (缺省)外表.Primary<para></para>
ManyToOneTopic.cs 文件 [Navigate(nameof(Topic.CategoryId))] &lt;-&gt; (缺省)Category.Id<para></para>
_________________public Category Category { get; set; }<para></para>
OneToManyCategory.cs 文件 (缺省)Category.Id &lt;-&gt; [Navigate(nameof(Topic.CategoryId))]<para></para>
_________________public List&lt;Topic&gt; Topics { get; set; }<para></para>
</summary>
</member>
<member name="P:FreeSql.DataAnnotations.NavigateAttribute.ManyToMany">
@ -377,6 +390,15 @@
手工绑定 ManyToMany 导航关系
</summary>
</member>
<member name="M:FreeSql.DataAnnotations.NavigateAttribute.#ctor(System.String)">
<summary>
OneToOne[Navigate(nameof(Primary))] &lt;-&gt; (缺省)外表.Primary<para></para>
ManyToOneTopic.cs 文件 [Navigate(nameof(Topic.CategoryId))] &lt;-&gt; (缺省)Category.Id<para></para>
_________________public Category Category { get; set; }<para></para>
OneToManyCategory.cs 文件 (缺省)Category.Id &lt;-&gt; [Navigate(nameof(Topic.CategoryId))]<para></para>
_________________public List&lt;Topic&gt; Topics { get; set; }<para></para>
</summary>
</member>
<member name="P:FreeSql.DataAnnotations.OraclePrimaryKeyNameAttribute.Name">
<summary>
主键名

View File

@ -151,6 +151,11 @@ namespace FreeSql.Internal.CommonProvider
var firstTb = _tables[0];
var firstTbs = _tables.Where(a => a.AliasInit == field[0]).ToArray();
if (firstTbs.Length == 1) firstTb = firstTbs[0];
else
{
firstTbs = _tables.Where(a => a.Table.Type.Name == field[0]).ToArray();
if (firstTbs.Length == 1) firstTb = firstTbs[0];
}
firstTb.Parameter = Expression.Parameter(firstTb.Table.Type, firstTb.Alias);
var currentType = firstTb.Table.Type;

View File

@ -530,16 +530,23 @@ namespace FreeSql.Internal
if (col.Attribute.MapType.NullableTypeOrThis() == typeof(DateTime))
{
col.DbScale = (byte)size;
if (col.Attribute.Scale <= 0) col.Attribute.Scale = col.DbScale;
continue;
}
if (sizeArr.Length == 1)
{
col.DbSize = size;
if (col.Attribute.StringLength <= 0) col.Attribute.StringLength = col.DbSize;
continue;
}
if (byte.TryParse(sizeArr[1], out var scale) == false) continue;
col.DbPrecision = (byte)size;
col.DbScale = scale;
if (col.Attribute.Precision <= 0)
{
col.Attribute.Precision = col.DbPrecision;
col.Attribute.Scale = col.DbScale;
}
}
trytb.IsRereadSql = trytb.Columns.Where(a => string.IsNullOrWhiteSpace(a.Value.Attribute.RereadSql) == false).Any();
tbc.AddOrUpdate(entity, trytb, (oldkey, oldval) => trytb);