从山证v2.3.0拷贝
This commit is contained in:
@@ -0,0 +1,62 @@
|
||||
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();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user