Files
zszq-trs/YLErpDAL/Modules/DataCacheModule/DataSource/VarietyDataSource.cs
T
2024-05-09 14:06:26 +08:00

63 lines
1.9 KiB
C#

namespace YLErp.Modules.DataCacheModule
{
public static partial class DataCacheManager
{
class VarietyDataSource : GenericeCachedDataSource<Variety>, Abstract.IDataSourceKey2<Variety>
{
public override string TableName => nameof(Variety);
readonly Dictionary<string, Variety> _dicEx;
private VarietyDataSource()
{
_dicEx = new Dictionary<string, Variety>(StringComparer.OrdinalIgnoreCase);
}
public Variety GetData(string varietyCode)
{
if (string.IsNullOrWhiteSpace(varietyCode))
{
return null;
}
lock (this)
{
if (_dicEx.TryGetValue(varietyCode, out var variety))
{
var clone = variety.Clone();
return clone;
}
using (var db = DbContextFactory.GetYLDbContext())
{
var va = db.variety.AsNoTracking().FirstOrDefault(n => n.VarietyCode == varietyCode);
if (va != null)
{
_dic[va.id] = va;
AfterUpdateHandle(va);
}
return va?.Clone();
}
}
}
private void AfterUpdateHandle(Variety data)
{
if (string.IsNullOrWhiteSpace(data.VarietyCode))
{
return;
}
_dicEx[data.VarietyCode] = data;
}
public static readonly VarietyDataSource Default;
static VarietyDataSource()
{
Default = new VarietyDataSource();
}
}
}
}