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