内部 ColumnInfo 调整

This commit is contained in:
28810
2020-08-18 18:14:02 +08:00
parent 90b6d76510
commit 8cec3e396b
31 changed files with 223 additions and 102 deletions

View File

@@ -1,4 +1,5 @@
using FreeSql.DataAnnotations;
using FreeSql.Extensions.EntityUtil;
using System;
using System.Collections.Concurrent;
using System.Collections.Generic;
@@ -20,8 +21,37 @@ namespace FreeSql.Internal.Model
public int DbSize { get; internal set; }
public byte DbPrecision { get; internal set; }
public byte DbScale { get; internal set; }
//public Func<object, object> ConversionCsToDb { get; internal set; }
//public Func<object, object> ConversionDbToCs { get; internal set; }
/// <summary>
/// 获取 obj.CsName 属性值 MapType 之后的数据库值
/// </summary>
/// <param name="obj"></param>
/// <returns></returns>
public object GetDbValue(object obj)
{
var dbval = Table.GetPropertyValue(obj, CsName);
//if (ConversionCsToDb != null) dbval = ConversionCsToDb(dbval);
if (Attribute.MapType != CsType) dbval = Utils.GetDataReaderValue(Attribute.MapType, dbval);
return dbval;
}
/// <summary>
/// 获取 obj.CsName 属性原始值(不经过 MapType
/// </summary>
/// <param name="obj"></param>
public object GetValue(object obj) => Table.GetPropertyValue(obj, CsName);
/// <summary>
/// 设置 obj.CsName 属性值
/// </summary>
/// <param name="obj"></param>
/// <param name="val"></param>
public void SetValue(object obj, object val) => Table.SetPropertyValue(obj, CsName, Utils.GetDataReaderValue(CsType, val));
static ConcurrentDictionary<ColumnInfo, Func<object, object>> _dicGetMapValue = new ConcurrentDictionary<ColumnInfo, Func<object, object>>();
[Obsolete("请使用 GetDbValue 或者 GetValue")]
public object GetMapValue(object obj)
{
var func = _dicGetMapValue.GetOrAdd(this, col =>
@@ -57,6 +87,7 @@ namespace FreeSql.Internal.Model
return func(obj);
}
static ConcurrentDictionary<ColumnInfo, Action<object, object>> _dicSetMapValue = new ConcurrentDictionary<ColumnInfo, Action<object, object>>();
[Obsolete("请使用 SetValue")]
public void SetMapValue(object obj, object val)
{
var func = _dicSetMapValue.GetOrAdd(this, col =>