mirror of
https://github.com/nsnail/FreeSql.git
synced 2025-11-03 08:55:26 +08:00
内部 ColumnInfo 调整
This commit is contained in:
@@ -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 =>
|
||||
|
||||
Reference in New Issue
Block a user