Где разместить логику поведения при использовании POCO? - PullRequest
1 голос
/ 27 января 2011

Я никогда не использовал POCOs , поэтому у меня есть привычка вкладывать много логики в мои классы бизнес-объектов. Поэтому я считаю, что мне не хватает некоторых важных понятий о планировке классов и мыслительном процессе, который необходим здесь.

Так что я был бы признателен за некоторые идеи, чтобы направить мой мозг в правильном направлении;

Скажите, если у вас есть два класса; Компания и сотрудник. Не могли бы вы привести примеры того, какие классы вы бы построили "вокруг" этих классов, которые заботятся о различном поведении / проверке и т. Д.? (Как некоторые имена классов и краткое описание их назначения)

(Или любые другие примеры были бы такими же полезными, как я думаю.)

Ответы [ 2 ]

1 голос
/ 27 января 2011

вы можете поставить проверку и бизнес-логику, создав класс метаданных для этого бизнес-класса как это

[MetadataType(typeof(EmployeeMetadata))]
    public partial class Employee
    {
        public class EmployeeMetadata
        {
            [Required(ErrorMessage="Employee Name is Required")]
            [StringLength(50, ErrorMessage="Must be under 30 Characters")]
            public string Name { get; set; }
         }
    }

эти классы называются ' классы приятелей ' См. это

0 голосов
/ 27 января 2011

Обычно я создаю фасадный слой для любых групп логических кодов в моей системе.Например, скажем, пользователю потребуется иметь дело только с данными компании и сотрудниками, если у пользователя есть учетные данные администратора.Так что в этом случае я бы создал класс AdminFacade следующим образом:

public class AdminFacade 
{  
   public Company GetCompanyByEmployee( Employee employee )
   {
        // open a db session / web service call etc.
        // run a query to find the company by employe id.
        // populate the company object 
        // close db session
        // return the populated customer object
   } 
}

У меня обычно есть мой GUI для создания экземпляров всех классов Facade, и это все, с чем работает GUI.Вы также можете добавить проверку в начале метода GetCompanyByEmployee и сгенерировать исключение, если допустим, что employee.startdate меньше года.

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...