50 lines
1.6 KiB
C#
50 lines
1.6 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Text;
|
|
|
|
namespace COA.EnterpriseServices.DataAccess
|
|
{
|
|
public static class DataAccessManager
|
|
{
|
|
private static readonly IDictionary<string, string[]> activeDataAccess = new Dictionary<string, string[]>
|
|
{
|
|
#region Creditor
|
|
|
|
["COA.EnterpriseServices.DataAccess.Entities.Creditor"] = new[]
|
|
{
|
|
"COA.EnterpriseServices.DataAccess.QuickBase.QuickBaseDataAccess",
|
|
"COA.EnterpriseServices.DataAccess.EntityFramework.EntityDataAccess"
|
|
},
|
|
|
|
#endregion
|
|
|
|
#region Client
|
|
|
|
["COA.EnterpriseServices.DataAccess.Entities.Client"] = new[]
|
|
{
|
|
"COA.EnterpriseServices.DataAccess.QuickBase.QuickBaseDataAccess",
|
|
"COA.EnterpriseServices.DataAccess.EntityFramework.EntityDataAccess"
|
|
}
|
|
|
|
#endregion
|
|
};
|
|
|
|
public static ICollection<IDataAccess<T>> GetDataAccess<T>() where T : class, IRecord
|
|
{
|
|
var type = typeof(T);
|
|
|
|
return Dependencies.Container
|
|
.GetAllInstances<IDataAccess<T>>()
|
|
.Where(i =>
|
|
{
|
|
var dataAccessType = i.GetType().FullName;
|
|
|
|
return activeDataAccess.ContainsKey(type.FullName) && activeDataAccess[type.FullName].Any(a => dataAccessType.StartsWith(a));
|
|
})
|
|
.OrderBy(i => i.GetType().Name.StartsWith("QuickBase", StringComparison.OrdinalIgnoreCase))
|
|
.ToList();
|
|
}
|
|
}
|
|
}
|