forked from ddrilling/AsbCloudServer
EfCacheExtensions incomplete
This commit is contained in:
parent
41d9e506bd
commit
b250e58d61
@ -21,6 +21,54 @@ namespace AsbCloudInfrastructure.EfCache
|
|||||||
private static readonly TimeSpan minCacheTime = TimeSpan.FromSeconds(2);
|
private static readonly TimeSpan minCacheTime = TimeSpan.FromSeconds(2);
|
||||||
private static readonly TimeSpan defaultObsolescence = TimeSpan.FromMinutes(4);
|
private static readonly TimeSpan defaultObsolescence = TimeSpan.FromMinutes(4);
|
||||||
|
|
||||||
|
private class YeldConvertedData<TEntity, TModel> : IEnumerable<TModel>
|
||||||
|
{
|
||||||
|
IEnumerable data;
|
||||||
|
public YeldConvertedData(IEnumerable<TEntity> entities, Func<TEntity, TModel> convert)
|
||||||
|
{
|
||||||
|
data = entities;
|
||||||
|
}
|
||||||
|
|
||||||
|
class Enumerator : IEnumerator<TModel>
|
||||||
|
{
|
||||||
|
private readonly IEnumerable data;
|
||||||
|
|
||||||
|
public Enumerator( IEnumerable data, Func<TEntity, TModel> convert)
|
||||||
|
{
|
||||||
|
this.data = data;
|
||||||
|
}
|
||||||
|
|
||||||
|
public TModel Current => throw new NotImplementedException();
|
||||||
|
|
||||||
|
object IEnumerator.Current => throw new NotImplementedException();
|
||||||
|
|
||||||
|
public void Dispose()
|
||||||
|
{
|
||||||
|
throw new NotImplementedException();
|
||||||
|
}
|
||||||
|
|
||||||
|
public bool MoveNext()
|
||||||
|
{
|
||||||
|
throw new NotImplementedException();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void Reset()
|
||||||
|
{
|
||||||
|
throw new NotImplementedException();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public IEnumerator<TModel> GetEnumerator()
|
||||||
|
{
|
||||||
|
throw new NotImplementedException();
|
||||||
|
}
|
||||||
|
|
||||||
|
IEnumerator IEnumerable.GetEnumerator()
|
||||||
|
{
|
||||||
|
throw new NotImplementedException();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private class CacheItem
|
private class CacheItem
|
||||||
{
|
{
|
||||||
internal IEnumerable? Data;
|
internal IEnumerable? Data;
|
||||||
@ -45,14 +93,10 @@ namespace AsbCloudInfrastructure.EfCache
|
|||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
var convertedData = typedEntityData.Select(convert).ToList();
|
var convertedData = typedEntityData.Select(convert).ToArray();
|
||||||
Data = convertedData;
|
Data = convertedData;
|
||||||
return convertedData;
|
return convertedData;
|
||||||
}
|
}
|
||||||
catch
|
|
||||||
{
|
|
||||||
throw;
|
|
||||||
}
|
|
||||||
finally
|
finally
|
||||||
{
|
{
|
||||||
semaphore.Release();
|
semaphore.Release();
|
||||||
@ -89,10 +133,6 @@ namespace AsbCloudInfrastructure.EfCache
|
|||||||
cache = new CacheItem();
|
cache = new CacheItem();
|
||||||
caches.Add(tag, cache);
|
caches.Add(tag, cache);
|
||||||
}
|
}
|
||||||
catch
|
|
||||||
{
|
|
||||||
throw;
|
|
||||||
}
|
|
||||||
finally
|
finally
|
||||||
{
|
{
|
||||||
semaphore.Release();
|
semaphore.Release();
|
||||||
@ -133,10 +173,6 @@ namespace AsbCloudInfrastructure.EfCache
|
|||||||
cache.DateObsolete = dateObsolete;
|
cache.DateObsolete = dateObsolete;
|
||||||
cache.DateObsoleteTotal = dateObsolete + queryTime + minCacheTime;
|
cache.DateObsoleteTotal = dateObsolete + queryTime + minCacheTime;
|
||||||
}
|
}
|
||||||
catch
|
|
||||||
{
|
|
||||||
throw;
|
|
||||||
}
|
|
||||||
finally
|
finally
|
||||||
{
|
{
|
||||||
cache.semaphore.Release();
|
cache.semaphore.Release();
|
||||||
@ -170,10 +206,6 @@ namespace AsbCloudInfrastructure.EfCache
|
|||||||
cache = new CacheItem();
|
cache = new CacheItem();
|
||||||
caches.Add(tag, cache);
|
caches.Add(tag, cache);
|
||||||
}
|
}
|
||||||
catch
|
|
||||||
{
|
|
||||||
throw;
|
|
||||||
}
|
|
||||||
finally
|
finally
|
||||||
{
|
{
|
||||||
semaphore.Release();
|
semaphore.Release();
|
||||||
@ -214,10 +246,6 @@ namespace AsbCloudInfrastructure.EfCache
|
|||||||
cache.DateObsolete = dateObsolete;
|
cache.DateObsolete = dateObsolete;
|
||||||
cache.DateObsoleteTotal = dateObsolete + queryTime + minCacheTime;
|
cache.DateObsoleteTotal = dateObsolete + queryTime + minCacheTime;
|
||||||
}
|
}
|
||||||
catch
|
|
||||||
{
|
|
||||||
throw;
|
|
||||||
}
|
|
||||||
finally
|
finally
|
||||||
{
|
{
|
||||||
cache.semaphore.Release();
|
cache.semaphore.Release();
|
||||||
|
@ -293,9 +293,10 @@ namespace AsbCloudInfrastructure.Repository
|
|||||||
|
|
||||||
if (entity.RelationUserRoleUserRoles?.Any() == true)
|
if (entity.RelationUserRoleUserRoles?.Any() == true)
|
||||||
{
|
{
|
||||||
|
var rolesCache = GetCacheUserRole();
|
||||||
dto.Roles = entity.RelationUserRoleUserRoles.Select(rel =>
|
dto.Roles = entity.RelationUserRoleUserRoles.Select(rel =>
|
||||||
{
|
{
|
||||||
var dto = GetCacheUserRole().First(r => r.Id == rel.IdInclude);
|
var dto = rolesCache.First(r => r.Id == rel.IdInclude);
|
||||||
var includedRole = Convert(dto);
|
var includedRole = Convert(dto);
|
||||||
return Convert(includedRole);
|
return Convert(includedRole);
|
||||||
}).ToArray();
|
}).ToArray();
|
||||||
|
Loading…
Reference in New Issue
Block a user