Одна библиотека
BLL.dll содержит бизнес-логику приложения.
Другая библиотека
DAL.dll представляет собой слой доступа к данным.
В библиотеке
DAL.dll есть вот такой код (используется Entity Framework — Code First):
namespace Med.Server.DAL
{
public static class Environment
{
internal static readonly DB DB = new DB(); // DB - это наследник DbContext
public static IQueryable<SheduleUnit> QueryUpdateUnits(DateTime fromDateTime)
{
return from shedule in DB.Shedules
join unit in DB.Units on shedule.Unit.Id equals unit.Id
where fromDateTime > shedule.StartDateTime
select new SheduleUnit { Shedule = shedule, Unit = unit };
}
public static List<string> GetUpdatableUnitsAndUpdateShedule()
{
List<string> units = new List<string>();
DateTime dateTimeNow = DateTime.Now;
var query = QueryUpdateUnits(dateTimeNow);
foreach (var su in query)
{
units.Add(su.Unit.Name);
su.Shedule.StartDateTime = dateTimeNow + TimeSpan.FromSeconds(su.Shedule.Period);
}
if (units.Any())
DB.SaveChanges();
return units;
}
}
}
Правильно ли так будет вообще? Ведь метод
GetUpdatableUnitsAndUpdateShedule, вроде как, содержит некую бизнесс-логику, следовательно, ему тут не место?
Может быть будет более правильно сделать класс
DB public, и операции в BLL.dll производить непосредственно с ним, избавшись заодно и от класса
Environment (это фасад библиотеки DAL) и сделав POCO классы тоже public?