COA.EnterpriseServices/COA.EnterpriseServices.DataAccess/DataAccessManager.cs

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();
}
}
}