тАЬрд░реВрдкреЛрдВ рд╕реЗ рдХреНрдпрд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ?тАЭ рд╕рдореАрдХреНрд╖рд╛ рдХреЛ рдкрдврд╝рдиреЗ рдХреЗ рдмрд╛рдж, рдореИрдВ рдпрд╣ рдмрддрд╛рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛ рдХрд┐ рдХреИрд╕реЗ тАЬрд╕рд╛рд░реНрд╡рднреМрдорд┐рдХ, рдЧрддрд┐рд╢реАрд▓ рд░реВрдк рд╕реЗ рдмрджрд▓рддреЗ рд╣реБрдП рд░реВрдктАЭ рдХреЛ рд╣рдорд╛рд░реЗ рдлреНрд░реЗрдорд╡рд░реНрдХ рдореЗрдВ
eXpressApp рдлреНрд░реЗрдорд╡рд░реНрдХ рдХреЗ LOB рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЛ рдЬрд▓реНрджреА рд╕реЗ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рдЕрдкрдиреА рдХрд╣рд╛рдиреА рдХреЗ рдкрд╣рд▓реЗ рднрд╛рдЧ рдореЗрдВ, рдореИрдВ рдлрд╝рд┐рд▓реНрдЯрд░рд┐рдВрдЧ рдорд╛рдиреЛрдВ, рджреГрд╢реНрдпрддрд╛ рдФрд░ рдкрд╣реБрдВрдЪ рдХреЛ рдкреНрд░рдмрдВрдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓реЛрдХрдкреНрд░рд┐рдп рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рдЙрджрд╛рд╣рд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП рдЧрддрд┐рд╢реАрд▓ рддрддреНрд╡реЛрдВ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХрд╛ рдкреНрд░рджрд░реНрд╢рди рдХрд░реВрдБрдЧрд╛, рд╕рд╛рде рд╣реА рдЗрди рдХреНрд╖реЗрддреНрд░реЛрдВ рдХреЛ рдЗрд╕ рддрд░рд╣ рдХреЗ рдЕрд╕рд╛рдорд╛рдиреНрдп рд╡реНрдпрд╛рд╡рд╕рд╛рдпрд┐рдХ рд╡рд╕реНрддреБ рдХреЗ рд░реВрдк рдореЗрдВ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░реВрдВрдЧрд╛:
[DomainComponent] public interface ICustomer : IOrganization, IAccount { }
рд╢реБрд░реБрдЖрдд рдореЗрдВ рд╡рд░реНрдб рдерд╛ ... рдпрд╛ рдПрдХ рд╡реНрдпрд╛рд╡рд╕рд╛рдпрд┐рдХ рд╡рд╕реНрддреБ!
рдмреЙрдХреНрд╕ рд╕реЗ рдмрд╛рд╣рд░, рд░реВрдкрд░реЗрдЦрд╛ рдХрдИ рдореБрдЦреНрдп рдкреНрд░рдХрд╛рд░ рдпрд╛ "рджреГрд╢реНрдп" рдкреНрд░рджрд╛рди рдХрд░рддреА рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдЙрджреНрджреЗрд╢реНрдп рдирд╛рдо рд╕реЗ рдХрд╛рдлреА рд╣рдж рддрдХ рд╕реНрдкрд╖реНрдЯ рд╣реИ:
тАв рд╕реВрдЪреА рджреГрд╢реНрдп - рд╡реНрдпрд╛рд╡рд╕рд╛рдпрд┐рдХ рд╡рд╕реНрддреБрдУрдВ рдХреА рдПрдХ рд╕реВрдЪреА рдкреЗрд╢ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╛рд░реНрдп рдХрд░рддрд╛ рд╣реИ;
тАв рдбрд┐рдЯреЗрд▓ рд╡реНрдпреВ - рд╡рд╕реНрддреБ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╡рд┐рд╕реНрддреГрдд рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рд╕реНрддреБрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╛рд░реНрдп рдХрд░рддрд╛ рд╣реИ;
тАв рдбреИрд╢рдмреЛрд░реНрдб рджреГрд╢реНрдп - рдХрдИ рдЕрд▓рдЧ-рдЕрд▓рдЧ рджреГрд╢реНрдп рджрд┐рдЦрд╛рдиреЗ рдХрд╛ рдХрд╛рд░реНрдп рдХрд░рддрд╛ рд╣реИ, рдЕрд░реНрдерд╛рддреН рдПрдХ рдХрдВрдЯреЗрдирд░ рд╣реИ рдЬреЛ рдЖрдо рддреМрд░ рдкрд░ рд╡реНрдпрд╛рдкрд╛рд░рд┐рдХ рд╡рд╕реНрддреБрдУрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рднреА рдирд╣реАрдВ рдЬрд╛рдирддрд╛ рд╣реИред
рдФрд░ рд╡реНрдпрд╛рд╡рд╕рд╛рдпрд┐рдХ рд╡рд╕реНрддреБ рдХрд╣рд╛рдВ рд╣реИ? рддрдереНрдп рдпрд╣ рд╣реИ рдХрд┐ eXpressApp рдлреНрд░реЗрдорд╡рд░реНрдХ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рд╡реНрдпрд╛рд╡рд╕рд╛рдпрд┐рдХ рд╡рд╕реНрддреБрдУрдВ / рд╕рдВрд╕реНрдерд╛рдУрдВ рдХреА рдкрд░рд┐рднрд╛рд╖рд╛рдУрдВ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдЗрди рд░реВрдкреЛрдВ рдХреЛ рдЙрддреНрдкрдиреНрди рдХрд░ рд╕рдХрддрд╛ рд╣реИред рддрдХрдиреАрдХреА рд░реВрдк рд╕реЗ, рдврд╛рдВрдЪрд╛ рдкрд╣рд▓реЗ рдореЗрдЯрд╛рдбреЗрдЯрд╛ рдмрдирд╛рддрд╛ рд╣реИ рдЬреЛ рднрд╡рд┐рд╖реНрдп рдХреЗ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдХреЗ рдХрдВрдХрд╛рд▓ рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдлрд┐рд░ рдЗрд╕рдХреЗ рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рджреМрд░рд╛рди рдЕрдВрддрд┐рдо рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕ рдореЗрдЯрд╛рдбреЗрдЯрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдиреЗрд╡рд┐рдЧреЗрд╢рди рд╕рд┐рд╕реНрдЯрдо рдФрд░ рдХрдорд╛рдВрдб, рд╕реАрдЖрд░рдпреВрдбреА рд╡рд╕реНрддреБрдУрдВ рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡, рдФрд░ рдмрд╣реБрдд рдХреБрдЫ, рдЬрд┐рд╕реЗ рдЕрдм рд╕рд╛рдорд╛рдиреНрдпрддрдГ "рдпреВрдЖрдИ" рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдордЪрд╛рдиред "
рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдкрд░реНрдпрд╛рдкреНрдд рд╕рд┐рджреНрдзрд╛рдВрдд рд╣реИ, рдЪрд▓реЛ рдКрдкрд░ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд╕рд╛рде рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддреЗ рд╣реИрдВред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, ICustomer рд╡реНрдпрд╛рдкрд╛рд░ рдЗрдХрд╛рдИ рдмрдирд╛рдПрдВ (рд╕рд╛рджрдЧреА рдХреЗ рд▓рд┐рдП, рдХрдХреНрд╖рд╛рдУрдВ рдХреЗ рдмрдЬрд╛рдп, рдореИрдВ рдЗрдВрдЯрд░рдлреЗрд╕ рдпрд╛
рдбреЛрдореЗрди рдШрдЯрдХреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реВрдВрдЧрд╛, рдЬреИрд╕рд╛ рдХрд┐ рд╣рдо рдЙрдиреНрд╣реЗрдВ рдЬрд╛рдирддреЗ рд╣реИрдВ):
[DomainComponent] public interface ICustomer : IOrganization, IAccount { }
, рдЬреЛ рдХрдИ рдШрдЯрдХреЛрдВ рд╕реЗ рдмрдирд╛ рд╣реЛрдЧрд╛:
[DomainComponent] public interface IAccount { string Email { get; set; } string Password { get; set; } } [DomainComponent] public interface IPerson { string LastName { get; set; } string FirstName { get; set; } DateTime Birthday { get; set; } } [DomainComponent] public interface IOrganization { string Name { get; set; } IList<IPerson> Staff { get; } IPerson Manager { get; set; } }
рдбреЗрд╡рд▓рдкрд░ рдХреЗ рд▓рд┐рдП рдлреНрд░реЗрдорд╡рд░реНрдХ рдХрд┐рддрдирд╛ рдЖрд╕рд╛рди рдмрдирд╛рддрд╛ рд╣реИ, рдЗрд╕рдХрд╛ рдЖрдХрд▓рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВ рдЖрд╡реЗрджрди рдХреЗ рдкрд╣рд▓реЗ рд▓реЙрдиреНрдЪ рдХреЗ рдмрд╛рдж рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдкрд░рд┐рдгрд╛рдо рджреВрдВрдЧрд╛, рдЬрд┐рд╕рдореЗрдВ рдЙрдкрд░реЛрдХреНрдд рдЙрджрд╛рд╣рд░рдг рд╕реЗ рдХреЗрд╡рд▓ рд╡реНрдпрд╛рдкрд╛рд░рд┐рдХ рд╕рдВрд╕реНрдерд╛рдПрдВ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ:


рдореИрдВ рдЕрд▓рдЧ рд╕реЗ рдзреНрдпрд╛рди рджреЗрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ рдореЛрдЯреЗ рддреМрд░ рдкрд░ рдореЗрдЯрд╛рдбреЗрдЯрд╛ рдкрд░рдд рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рдХреЗ рдХрд╛рд░рдг, рд╣рдорд╛рд░рд╛ рдлреНрд░реЗрдорд╡рд░реНрдХ рдПрдХ рд╣реА рдХреЛрдб рдмреЗрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрдИ рдкреНрд▓реЗрдЯрдлрд╛рд░реНрдореЛрдВ рдХреЗ рд▓рд┐рдП рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдПрдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдмрдирд╛рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реИ (рд╕рд╛рдорд╛рдиреНрдп рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рдпреЗ рд╡реНрдпрд╛рдкрд╛рд░рд┐рдХ рд╕рдВрд╕реНрдерд╛рдПрдВ, рдирд┐рдпрдВрддреНрд░рдХ рдФрд░ рдЖрджреЗрд╢, рдХреНрд╖реЗрддреНрд░ рдФрд░ рджреГрд╢реНрдп рд╕рдВрдкрд╛рджрдХ рд╣реИрдВ)ред
рдЗрд╕рд▓рд┐рдП, рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдХреЗрд╡рд▓ ICustomer рд╡реНрдпрд╛рдкрд╛рд░ рдЗрдХрд╛рдИ рд╣реЛрдиреЗ рдХреЗ рдирд╛рддреЗ, рдХреБрдЫ рд╣реА рдорд┐рдирдЯреЛрдВ рдореЗрдВ рдореБрдЭреЗ рдмрд╣реБрдХреНрд░рд┐рдпрд╛рд╢реАрд▓ рд╡рд┐рдВрдбреЛрдЬрд╝ рдФрд░ рд╡реЗрдм рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдорд┐рд▓реЗред
рд╣рдо "рд╕реНрдорд╛рд░реНрдЯ" рд░реВрдк рдХрд╛ рджрд┐рд▓ рд▓реЙрдиреНрдЪ рдХрд░рддреЗ рд╣реИрдВ
рдИрдорд╛рдирджрд╛рд░ рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП, рдореБрдЭреЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ PUZs (рдлреАрд▓реНрдб-рдХрдВрдбреАрд╢рди-рд╡реИрд▓реНрдпреВ) рд╢рдмреНрдж рдкрд╕рдВрдж рдЖрдпрд╛, рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рд╕рдХреНрд░рд┐рдп рд░реВрдк рд╕реЗ рдбрд╛рдпрдирд╛рдорд┐рдХреНрд╕ рдХреЗ рддрддреНрд╡реЛрдВ рдпрд╛ рдлреЙрд░реНрдо рдХреЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЗ рдирд┐рдпрдореЛрдВ рдХреЛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП
рдкрд┐рдЫрд▓реЗ рд▓реЗрдЦ рдХреЗ рд▓реЗрдЦрдХ рджреНрд╡рд╛рд░рд╛ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдЬреАрдбреАрдПрд▓ рдХреА рдШреЛрд╖рдгрд╛ рдХреЗ рд▓рд┐рдП рд▓реЛрдХрдкреНрд░рд┐рдп рджреГрд╖реНрдЯрд┐рдХреЛрдгреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдПрдХ рдШреЛрд╖рдгрд╛рддреНрдордХ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдПрдХ рд╡реНрдпрд╛рдкрд╛рд░рд┐рдХ рд╡рд╕реНрддреБ рдФрд░ рдЙрд╕рдХреЗ рд╕рджрд╕реНрдпреЛрдВ рдХреА рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЛ рд╕рдЬрд╛рдирд╛ рд╢рд╛рдорд┐рд▓ рд╣реИ (рд╕рдВрднрд╡рддрдГ рдЖрдкрдХреЛ
рдбреЗрдЯрд╛ рдПрдиреЛрдЯреЗрд╢рди рд╕реЗ рдЬрд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ)ред рдЗрд╕ рдЕрдзреНрдпрд╛рдп рдореЗрдВ рдореИрдВ рдЖрдкрдХреЛ рдмрддрд╛рдКрдВрдЧрд╛ рдХрд┐ рдПрдХ рдШреЛрд╖рдгрд╛рддреНрдордХ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╣рдорд╛рд░реЗ рдврд╛рдВрдЪреЗ рдореЗрдВ рдХрдИ рд▓реЛрдХрдкреНрд░рд┐рдп рд╡реНрдпрд╛рдкрд╛рд░ рдирд┐рдпрдореЛрдВ рдХреЛ рдХреИрд╕реЗ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рдПред
рд╡реНрдпрд╛рд╡рд╕рд╛рдпрд┐рдХ рдирд┐рдпрдо рджреНрд╡рд╛рд░рд╛ рдлрд╝реАрд▓реНрдб рдорд╛рди рдлрд╝рд┐рд▓реНрдЯрд░ рдХрд░реЗрдВ
рдлрд╝реАрд▓реНрдб рдорд╛рдиреЛрдВ рдХреЛ рдлрд╝рд┐рд▓реНрдЯрд░ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рддрд░реАрдХрд╛ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реИ:
DataSourceProperty рдФрд░
DataSourceCriteria (
рдкреНрд░рд▓реЗрдЦрди рд╕реЗ рдЙрдирдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рдЬрд╛рдиреЗрдВ )ред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╣рдо рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдХрд┐ рд╣рдорд╛рд░реЗ IOrganization рдХреЗ рдкреНрд░рдмрдВрдзрдХ рдХреА рд╕рдВрдкрддреНрддрд┐ рдХреЗрд╡рд▓ рдХрд░реНрдордЪрд╛рд░реА рд╕рдВрдЧреНрд░рд╣ рд╕реЗ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐рдпрд╛рдВ рджрд┐рдЦрд╛рдП, рди рдХрд┐ IPerson рдкреНрд░рдХрд╛рд░ рдХреА рд╕рднреА рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐рдпрд╛рдВред рдпрд╣ рдХрд░рдирд╛ рдмрд╣реБрдд рдЖрд╕рд╛рди рд╣реИ:
[DataSourceProperty("Staff")] IPerson Manager { get; set; }
рдЬреИрд╕рд╛ рдХрд┐ рдЖрдкрдиреЗ рдЕрдиреБрдорд╛рди рд▓рдЧрд╛рдпрд╛ рд╣реЛрдЧрд╛, рдЗрд╕ рд╡рд┐рд╢реЗрд╖рддрд╛ рдХрд╛ рдореБрдЦреНрдп рдкреИрд░рд╛рдореАрдЯрд░ рд╡рд╛рдВрдЫрд┐рдд рдкреНрд░рдХрд╛рд░ рдХреА рд╡рд╕реНрддреБрдУрдВ рдХреА рд╕реВрдЪреА рд╡рд╛рд▓реА рд╕рдВрдкрддреНрддрд┐ рдХрд╛ рдирд╛рдо рд╣реИред рдиреЗрд╕реНрдЯреЗрдб рдЧреБрдгреЛрдВ рдХреЛ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢реЗрд╖рддрд╛ рдкрд░реНрдпрд╛рдкреНрдд рд╕реНрдорд╛рд░реНрдЯ рд╣реИред рдЗрд╕рд▓рд┐рдП, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрджрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдХрд░реНрдордЪрд╛рд░реА рд╕рдВрдЧреНрд░рд╣ рдХреЗ рд╕рд╛рде рд╡рд┐рднрд╛рдЧ рдХреА рд╕рдВрдкрддреНрддрд┐ рд╣реИ, рддреЛ рд╣рдо рдЗрд╕ рддрд░рд╣ рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ:
[DataSourceProperty("Department.Staff")]
рдпрджрд┐ рд╣рдо рдлрд╝рд┐рд▓реНрдЯрд░ рдХреЛ рдФрд░ рдкрд░рд┐рд╖реНрдХреГрдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдЖрд╡рд╢реНрдпрдХ рдорд╛рдкрджрдВрдб рдХреЗ рд╕рд╛рде рдПрдХ DataSourceCriteriaAttribute рдЬреЛрдбрд╝реЗрдВ:
[DataSourceProperty("Staff"),DataSourceCriteria("StartsWith(FirstName, '123')")] IPerson Manager { get; set; }
рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рд╣рдореЗрдВ рдРрд╕рд╛ рдЕрдкреЗрдХреНрд╖рд┐рдд рдкрд░рд┐рдгрд╛рдо рдорд┐рд▓рддрд╛ рд╣реИ:

рдпрд╣ рдордд рднреВрд▓реЛ рдХрд┐ рдпрд╣ рд╕рдм рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╡реЗрдм рдкрд░ рднреА рдХрд╛рдо рдХрд░реЗрдЧрд╛ред рдпрджрд┐ рдЖрд╡рд╢реНрдпрдХ рд╣реЛ, рддреЛ рдЖрдк рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдЯрд╛рдбреЗрдЯрд╛ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЗрди рдлрд╝рд┐рд▓реНрдЯрд░ рдХреЛ рднреА рдкреНрд░рдмрдВрдзрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдмреЗрд╢рдХ, рдЖрдк рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рдкрд░рд┐рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬрд┐рд╕рдореЗрдВ рдорд╛рдирджрдВрдб рд╡рд┐рд╢реЗрд╖
рдСрдмреНрдЬреЗрдХреНрдЯ-рдУрд░рд┐рдПрдВрдЯреЗрдб рднрд╛рд╖рд╛ рджреНрд╡рд╛рд░рд╛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдирд╣реАрдВ
рд╣реИ , рд▓реЗрдХрд┐рди рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЛрдб (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╕рд░рд▓рддрдо рдорд╛рдорд▓реЗ рдореЗрдВ, рд╣рдо рдПрдХ рдирд┐рдЬреА рд╕рдВрдкрддреНрддрд┐ рдХреА рдШреЛрд╖рдгрд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ DataSourcePropertyAttribute рдХреЗ рд▓рд┐рдП рдлрд╝рд┐рд▓реНрдЯрд░реНрдб рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдХреА рдХрд┐рд╕реА рднреА рд╕реВрдЪреА рдХреЛ рд╡рд╛рдкрд╕ рдХрд░ рджреЗрдЧрд╛)ред рд╣рдорд╛рд░реЗ рдврд╛рдВрдЪреЗ рдореЗрдВ рдЗрд╕ рдкрд░рд┐рджреГрд╢реНрдп рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдкрд░ рдЕрдзрд┐рдХ рдЙрджрд╛рд╣рд░рдг
рдкреНрд░рд▓реЗрдЦрди рдореЗрдВ рдкрд╛рдП рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВред
рдПрдХ рд╡реНрдпрд╛рдкрд╛рд░ рдирд┐рдпрдо рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдХреНрд╖реЗрддреНрд░ рдореВрд▓реНрдпреЛрдВ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдирд╛
рдпрджрд┐ рд╕реНрдЯрд╛рдл рд╕рдВрдЧреНрд░рд╣ рдЦрд╛рд▓реА рдирд╣реАрдВ рд╣реИ, рддреЛ рд╣рдорд╛рд░реЗ рдкреНрд░рдмрдВрдзрдХ рдлрд╝реАрд▓реНрдб рдХреЛ рдЕрдирд┐рд╡рд╛рд░реНрдп рдмрдирд╛рдПрдВред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рд╡рд┐рд╢реЗрд╖рддрд╛
RuleRequiredField рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ рдФрд░ рдЕрдкрдиреЗ TargetCriteria рдкреИрд░рд╛рдореАрдЯрд░ рдореЗрдВ рдЖрд╡рд╢реНрдпрдХ рд╢рд░реНрдд рд╕реЗрдЯ рдХрд░реЗрдВ:
[RuleRequiredField(TargetCriteria = "Staff.Count > 0")] IPerson Manager { get; set; }
рдпрд╣ рд╕рдм рдХрд╛рдлреА рд╕рд░рд▓ рд╣реИ, рд▓реЗрдХрд┐рди рдХреНрдпрд╛ рд╣реЛрдЧрд╛ рдЕрдЧрд░ рд╣рдореЗрдВ рдЖрд╡рд╢реНрдпрдХ рдХреНрд╖реЗрддреНрд░ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдХреБрдЫ рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ? рдлреНрд░реЗрдорд╡рд░реНрдХ рдХреЗ рдкрд╛рд╕ рдЗрд╕рдХрд╛ рдЙрддреНрддрд░ рднреА рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдмреЙрдХреНрд╕ рдХреЗ рдмрд╛рд╣рд░ рдпрд╣
рдХреБрдЫ рджрд░реНрдЬрди рд▓реЛрдХрдкреНрд░рд┐рдп рдбреЗрдЯрд╛ рдирд┐рдпрдВрддреНрд░рдг
рдирд┐рдпрдо рдкреНрд░рджрд╛рди рдХрд░рддрд╛
рд╣реИ рдЬреЛ рд▓рдЧрднрдЧ рд╕рднреА рдЕрд╡рд╕рд░реЛрдВ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреБрдХреНрдд рд╣реИрдВред
рдЗрд╕реЗ рджреЗрдЦреЗрдВ! рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╣рдо рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдХрд┐ рд╣рдорд╛рд░реЗ IAccount рдХрд╛ рдИрдореЗрд▓ рдХреНрд╖реЗрддреНрд░ рдПрдХ рдЕрдиреВрдард╛ рдФрд░ рдорд╛рдиреНрдп рдИрдореЗрд▓ рдкрддрд╛ рд╣реЛрдЧрд╛ред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдмрд╕ рдПрдХ рдЬреЛрдбрд╝реЗ рдХреЛ рдФрд░ рдЕрдзрд┐рдХ рддреИрдпрд╛рд░ рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ рдЬреЛрдбрд╝реЗрдВ:
[RuleRequiredField, RuleUniqueValue] [RuleRegularExpression(@"^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[az]{2,4})$")] string Email { get; set; }
рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рд╕рддреНрдпрд╛рдкрди рдореЙрдбреНрдпреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрд▓реНрдкрдирд╛ рдХреА рдЧрдИ рдереА, рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдирдП eXpressApp рдлреНрд░реЗрдорд╡рд░реНрдХ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╕рдорд╛рдзрд╛рди рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:

рдХреНрдпрд╛ рдпрд╣ рдпрд╛рдж рд░рдЦрдиреЗ рдпреЛрдЧреНрдп рд╣реИ рдХрд┐ рдХреЛрдб рдореЗрдВ рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рдбреЗрдЯрд╛ рдирд┐рдпрдВрддреНрд░рдг рдирд┐рдпрдо рдмрдирд╛рдиреЗ, рдпрд╛ рдореМрдЬреВрджрд╛ рдирд┐рдпрдореЛрдВ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ / рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдЯрд╛рдбреЗрдЯрд╛ рдореЗрдВ рдирдП рдирд┐рдпрдореЛрдВ рдХреА рдШреЛрд╖рдгрд╛ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдЖрд╕рд╛рди рдЕрд╡рд╕рд░ рд╣реИ:

рдЗрди рд░реВрдкреЛрдВ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛рдУрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рдЬрд╛рдирдиреЗ рдХреЗ рд▓рд┐рдП
, рджрд╕реНрддрд╛рд╡реЗрдЬ рджреЗрдЦреЗрдВред
рд╡реНрдпрд╛рдкрд╛рд░ рдирд┐рдпрдо рдХреЗ рдЖрдзрд╛рд░ рдкрд░, рдЦреЗрддреЛрдВ рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐, рджреГрд╢реНрдпрддрд╛ рдФрд░ рдкрд╣реБрдВрдЪ, рд╕рд╛рде рд╣реА рдЕрдиреНрдп рдирд┐рдпрдВрддреНрд░рдгреЛрдВ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди
рдпрд╣ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдмрд┐рд▓реНрдЯ-рдЗрди
рдХрдВрдбрд┐рд╢рдирд▓ рдЕрдкреАрдпрд░реЗрдВрд╕ рдореЙрдбреНрдпреВрд▓ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рджрд╛рди рдХреА рдЬрд╛рддреА рд╣реИ, рдЬреЛ рдХрд┐ рд╡рд┐рдЬрд╝реБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ рдЯреВрд▓рдмреЙрдХреНрд╕ рд╕реЗ рдХреЗрд╡рд▓ рдЦреАрдВрдЪрдХрд░ рдФрд░ рдЧрд┐рд░рд╛рдХрд░ рд╣рдорд╛рд░реА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдЬреЛрдбрд╝рдирд╛ рдЖрд╕рд╛рди рд╣реИ, рдЬрдмрдХрд┐ рдореЙрдбреНрдпреВрд▓ рдбрд┐рдЬрд╛рдЗрдирд░ (рдиреАрдЪреЗ рджрд┐рдП рдЧрдП рдЪрд┐рддреНрд░ рдореЗрдВ рджрд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ) рдпрд╛ рдкреВрд░реЗ рдПрдХреНрд╕рдкреАрд░рд┐рдпрд╛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рдбрд┐рдЬрд╛рдЗрдирд░:

рдирддреАрдЬрддрди, рдореЙрдбреНрдпреВрд▓ рд╡рд┐рдзрд╛рдирд╕рднрд╛ рдХреЗ рд▓рд┐рдП рдПрдХ рд▓рд┐рдВрдХ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЬрд╛рдПрдЧрд╛ред рдЙрд╕рдХреЗ рдмрд╛рдж, рдЖрдкрдХреЛ рд╢реИрд▓реА, рдкрд╣реБрдВрдЪ, рд╕рдВрдкрд╛рджрдХреЛрдВ рдФрд░ рдлрд╝реАрд▓реНрдб рд╣реЗрдбрд┐рдВрдЧ рдХреА рджреГрд╢реНрдпрддрд╛, рд╕рд╛рде рд╣реА рдЕрдиреНрдп рдирд┐рдпрдВрддреНрд░рдг, рдЬреИрд╕реЗ рдХрд┐ рд╕рд╣реЗрдЬреЗрдВ, рддрд╛рдЬрд╝рд╛ рдореЗрдиреВ рдЖрджреЗрд╢, рдЖрджрд┐ рдХреЛ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд
AppearanceAttribute рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдЕрд╡рд╕рд░ рдорд┐рд▓реЗрдЧрд╛ред
рддреЛ, рдЪрд▓рд┐рдП рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ:
рд╢реИрд▓реА рдореЗрдВ рдмрджрд▓рд╛рд╡
[Appearance("MarkUnsafePasswordInRed", "Len(Password) < 6", FontColor = "Red")] string Password { get; set; }
рдпрд╣ рдирд┐рдпрдо рдкрд╛рд╕рд╡рд░реНрдб рдлрд╝реАрд▓реНрдб рдХреЛ рд▓рд╛рд▓ рд░рдВрдЧ рдореЗрдВ рд╣рд╛рдЗрд▓рд╛рдЗрдЯ рдХрд░реЗрдЧрд╛ рдпрджрд┐ рдЗрд╕рдореЗрдВ рдЫрд╣ рд╕реЗ рдХрдо рдЕрдХреНрд╖рд░ рд╣реИрдВ:

рдПрдХ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЖрд╡реЗрджрди рдореЗрдВ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдк рдЗрд╕ рддрд░рд╣ рдХреЗ рдмреИрдХрд▓рд╛рдЗрдЯ рдХреЗ рд╕рд╛рде рдмрд╣реБрдд рдХрдо рд▓реЛрдЧреЛрдВ рдХреЛ рдбрд░рд╛рддреЗ рд╣реИрдВ, рдФрд░ рд╢рд╛рдпрдж рдЗрд╕ рддрд░рд╣ рдХреЗ рдирд┐рдпрдорд┐рдд рдирд┐рдпрдВрддреНрд░рдг рдХреЗ рд╕рд╛рде рдбреЗрдЯрд╛ рдирд┐рдпрдВрддреНрд░рдг рдирд┐рдпрдо рдХреЛ рдлрд┐рд░ рд╕реЗ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рдмреЗрд╣рддрд░ рд╣реИ: "^ (! =ред * [A-zA-Z]) (=? * * D \ _ )ред {6,} $ тАЭред
рдЖрдк рдПрдХ рд╣реА рдирд╛рдо рдХреЗ рд╡рд┐рд╢реЗрд╖рддрд╛ рдорд╛рдкрджрдВрдбреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкреГрд╖реНрдарднреВрдорд┐ рдХрд╛ рд░рдВрдЧ рдФрд░ рдлрд╝реЙрдиреНрдЯ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рднреА рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВред
рдореИрдВ рдЦреЗрддреЛрдВ рдХреЛ рдЙрдЬрд╛рдЧрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП "рдХреЛрд╢рд┐рд╢" рдХрд░рдХреЗ рднреА рд╡рд┐рдЪрд▓рд┐рдд рд╣реЛрдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ рдЕрдиреБрднрд╡ рд╕реЗ рдпрд╣ рдЕрдХреНрд╕рд░ рди рдХреЗрд╡рд▓ рдХрд┐рд╕реА рд╡рд╕реНрддреБ рдХреА рд╕реНрдерд┐рддрд┐ (рд╕рд╛рдорд╛рдиреНрдп / рдЗрддрдиреА-рдЗрддрдиреА / рдмреБрд░реА) рдХрд╛ рд╕рдВрдХреЗрдд рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рд╣реЛрддрд╛ рд╣реИ, рдмрд▓реНрдХрд┐ рдлреЙрд░реНрдо ("рд╡рд░реНрдХрдлрд╝реНрд▓реЛ") рдкрд░ рдЪрд░рдгреЛрдВ рдХреЗ рд╕рд╣реА рдЕрдиреБрдХреНрд░рдо рдХреЛ рд╕рдВрдХреЗрдд рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рднреА рд╣реЛрддрд╛ рд╣реИред
рдЗрд╕рд▓рд┐рдП, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╣рдорд╛рд░реА рдЖрдВрддрд░рд┐рдХ рддреНрд░реБрдЯрд┐ рдЯреНрд░реИрдХрд┐рдВрдЧ рдкреНрд░рдгрд╛рд▓реА рдореЗрдВ (рд╡реИрд╕реЗ, 2006 рдореЗрдВ рд╡рд╛рдкрд╕ XAF рдореЗрдВ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИ), рдореИрдВрдиреЗ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдирд┐рдпрдо рдХреА рд╕реНрдерд╛рдкрдирд╛ рдХреА рд╣реИ, рдЬреЛ рд╣рд░реЗ рд░рдВрдЧ рдореЗрдВ рдЖрд╡рд╢реНрдпрдХ рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рдЖрдИрдбреА рдлрд╝реАрд▓реНрдб рдХреЛ рдЙрдЬрд╛рдЧрд░ рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рд╕рд╕реЗ рддреНрд░реБрдЯрд┐ рд░рд┐рдкреЛрд░реНрдЯ рдореЗрдВ рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рд╕реНрдерд┐рддрд┐ рд╕реЗрдЯ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рдиреЗрддреНрд░рд╣реАрди рдореБрдЭреЗ рд╕рд╣реА рд░рд╛рд╕реНрддрд╛ рджрд┐рдЦрд╛ рд░рд╣рд╛ рд╣реИред :
<AppearanceRule Id="HighlightDuplicateWhenNonDraft" Criteria="Status.Name == 'Duplicate' AND !Draft" BackColor="192, 255, 192" Context="DetailView" TargetItems="OriginalIssue" Index="9" IsNewNode="True" />
рдЙрдкрд▓рдмреНрдзрддрд╛ рдмрджрд▓реЗрдВ
[Appearance("ChangeManagerAvailabilityAgainstStaff", "Staff.Count = 0", Enabled = false)] IPerson Manager { get; set; }
рдпрджрд┐ рд╕реНрдЯрд╛рдл рд╕рдВрдЧреНрд░рд╣ рдЦрд╛рд▓реА рд╣реИ, рддреЛ рдпрд╣ рдирд┐рдпрдо рдкреНрд░рдмрдВрдзрдХ рдХреНрд╖реЗрддреНрд░ рдХреЛ рдЕрдиреБрдкрд▓рдмреНрдз рдмрдирд╛ рджреЗрдЧрд╛:

рджреГрд╢реНрдпрддрд╛ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди
рдпрджрд┐ рд╣рдо рдкрд┐рдЫрд▓реЗ рдирд┐рдпрдо рдХреЛ рдереЛрдбрд╝рд╛ рдмрджрд▓ рджреЗрддреЗ рд╣реИрдВ, рддреЛ рд╣рдо рдкрд╣реБрдБрдЪ рдХреНрд╖рдорддрд╛ рдХреЗ рдмрдЬрд╛рдп рджреГрд╢реНрдпрддрд╛ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
[Appearance("ChangeManagerAvailabilityAgainstStaff", "Staff.Count = 0", Visibility = ViewItemVisibility.Hide)]

ViewItemVisibility рдЧрдгрди рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдорд╛рди рд╢рд╛рдорд┐рд▓ рд╣реИрдВ: рдЫрд┐рдкрд╛рдПрдБ, рджрд┐рдЦрд╛рдПрдБ, ShowEmptySpaceред рдЫрд┐рдкрд╛рдирд╛ рдЕрдкрдиреЗ рдЖрдк рдХреЗ рдмрд╛рдж рдХреЛрдИ "рдЫреЗрдж" рдирд╣реАрдВ рдЫреЛрдбрд╝рддрд╛ рд╣реИ, рдЬрдмрдХрд┐ рд╢реЛрдПрдореНрдкреНрдЯреАрд╕реНрдкреЗрд╕ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдлреЙрд░реНрдо рдкрд░ рдПрдХ "рдЫреЗрдж" рдЫреЛрдбрд╝ рджреЗрддрд╛ рд╣реИ (рд╣рдорд╛рд░реЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рдкрд░рд┐рджреГрд╢реНрдп рддрдм рдереЗ рдЬрдм рдпрд╣ рдЗрддрдирд╛ рдмреБрд░рд╛ рдирд╣реАрдВ рд╣реИ, рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ, рдпрд╛ рд╕рд┐рд░реНрдл рд╕рднреА рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдкрд╕рдВрдж рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ рдЬрдм рдЙрдирдХреЗ рдкрд╛рд╕ рдлреЙрд░реНрдо рд╣реЛрддрд╛ рд╣реИ рдХреБрдЫ рдЪрд▓рддрд╛ рд╣реИ рдФрд░ рдлрд┐рд░ рд╕реЗ рдмрдирддрд╛ рд╣реИ)ред рдпрд╣ рдзреНрдпрд╛рди рд░рдЦрдирд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ рдХрд┐ рдпрджрд┐ рдЫрд┐рдкрдиреЗ рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рдлреЙрд░реНрдо рдкрд░ рдЦреЗрддреЛрдВ рдХреЗ рдХрдВрдЯреЗрдирд░ рдореЗрдВ рдХреБрдЫ рднреА рджрд┐рдЦрд╛рдИ рдирд╣реАрдВ рджреЗрддрд╛ рд╣реИ, рддреЛ рдпрд╣ рдЦреБрдж рдХреЛ рдЫрд┐рдкрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдХрд░реЗрдЧрд╛ред
рдпреЗ рд╕рднреА рдирд┐рдпрдо рд╕реВрдЪреА рджреГрд╢реНрдп рдореЗрдВ рднреА рдХрд╛рдо рдХрд░реЗрдВрдЧреЗ, рдЪрд╛рд╣реЗ рд╡рд╣ рджреЗрдЦрдиреЗ рдпрд╛ рд╕рдВрдкрд╛рджрди рдореЛрдб рдореЗрдВ рд╣реЛ (рд╣рдорд╛рд░реЗ рдбреЗрдореЛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╕реЗ рдЪрд┐рддреНрд░ рджреЗрдЦреЗрдВ):

рдлрд┐рд░, рдЖрдк рди рдХреЗрд╡рд▓ рдХреЛрдб рдореЗрдВ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ, рдмрд▓реНрдХрд┐ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдЯрд╛рдбреЗрдЯрд╛ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рднреА рдРрд╕реЗ рдирд┐рдпрдо рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

рд╡реНрдпрд╛рд╡рд╕рд╛рдпрд┐рдХ рдирд┐рдпрдо рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдлрд╝реАрд▓реНрдб рдХрд╛ рдорд╛рди рдмрджрд▓реЗрдВ
рдореИрдВ рдХреБрдЫ рдЙрджрд╛рд╣рд░рдг рджреЗрдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛ рдХрд┐ рдХреИрд╕реЗ рдПрдХ рдлрд╛рд░реНрдо рдкрд░ рдлрд╝реАрд▓реНрдбреНрд╕ рдХреЛ рдХрдВрдкреНрдпреВрдЯреЗрдмрд▓ рдмрдирд╛рдпрд╛ рдЬрд╛рдПред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдбреЛрдореЗрди рдШрдЯрдХ
рдкрд░рд┐рдХрд▓рди рдПрдЯреНрд░рд┐рдмреНрдпреВрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рд╣реЛрддрд╛ рд╣реИ, рдЬреЛ рд╣рдорд╛рд░реА рднрд╛рд╖рд╛ рдореЗрдВ рдорд╛рдирджрдВрдб рдХреА рдЧрдгрдирд╛ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рд▓реЗрддрд╛ рд╣реИред рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рдпрджрд┐ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рд╕реЗ рдлрд╝реАрд▓реНрдб рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХреА рдЬрд╛рддреА рд╣реИрдВ, рддреЛ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХреА рдЧрдгрдирд╛ рд╕рд░реНрд╡рд░ рдкрд░ рдХреА рдЬрд╛рдПрдЧреА, рди рдХрд┐ рдХреНрд▓рд╛рдЗрдВрдЯ рдкрд░ред рдпрд╣рд╛рдБ рдРрд╕реЗ рдкрд░рд┐рдХрд▓рд┐рдд рдлрд╝реАрд▓реНрдб рдХреЗ рдХреБрдЫ рдЙрджрд╛рд╣рд░рдг рджрд┐рдП рдЧрдП рд╣реИрдВ:
[Calculated("Concat(FirstName, ' ', LastName)")] string FullName { get; } [Calculated("Invoices[Status == 'Completed'].Sum(Amount)")] decimal SaleAmount { get; }
рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЗ рдмрд┐рдирд╛ рдХреБрдЫ рдФрд░ рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рдЖрдЧ рд▓рдЧрд╛рдПрдВ ...
рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ, рдЕрдзрд┐рдХрд╛рдВрд╢ рдЬреАрдбреАрдмреА рддреБрд░рдВрдд рдирд╣реАрдВ рднрд░реЗ рдЬрд╛рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЬрдм рдлреЛрдХрд╕ рдХреБрдЫ рдмрджрд▓реЗ рд╣реБрдП рдлрд╝реАрд▓реНрдб рдХреЗ рд╕рдВрдкрд╛рджрдХ рдХреЛ рдЫреЛрдбрд╝ рджреЗрддрд╛ рд╣реИ, рдЕрд░реНрдерд╛рддред рдЬрдм рдлрд╝реАрд▓реНрдб рд╕рдВрдкрд╛рджрдХ рд╕реЗ рдорд╛рди рд╕реАрдзреЗ рдСрдмреНрдЬреЗрдХреНрдЯ рдкрд░ рдЬрд╛рддрд╛ рд╣реИред рдкреБрдирд░реНрдЧрдгрдирд╛ рдЕрдХреНрд╕рд░ рдХреБрдЫ рдмрд╛рд╣рд░реА рдХрд╛рд░рдХреЛрдВ рдпрд╛ рдШрдЯрдирд╛рдУрдВ рдХреЗ рдХрд╛рд░рдг рднреА рд╣реЛ рд╕рдХрддреА рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдлреЙрд░реНрдо рдкрд░ рд╡рд░реНрддрдорд╛рди рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рд╕рд╣реЗрдЬрдирд╛, рдЕрдкрдбреЗрдЯ рдХрд░рдирд╛, рдмрджрд▓рдирд╛ рдЖрджрд┐ред рдпрд╣ рд╡реНрдпрд╡рд╣рд╛рд░ рдХрдИ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рд╕реНрд╡реАрдХрд╛рд░реНрдп рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдЖрдкрдХреЛ рдлреЙрд░реНрдо рдкрд░ рдЕрдирд╛рд╡рд╢реНрдпрдХ "рд╢реЛрд░" рд╕реЗ рдмрдЪрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рдЕрдиреБрд░реЛрдзреЛрдВ рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдирд╣реАрдВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред рд╕рд░реНрд╡рд░ рдХреЗ рд▓рд┐рдПред рдлрд┐рд░ рднреА, рдРрд╕реЗ рдХрдИ рдкрд░рд┐рджреГрд╢реНрдп рд╣реИрдВ рдЬрд╣рд╛рдБ рдпрд╣ рдЖрд╡рд╢реНрдпрдХ рд╣реИ рдХрд┐ рд╣рдорд╛рд░реЗ PCB "рдЬрд▓реНрджреА" рд╣реЛрдВред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдорд╛рд░рд╛ рдврд╛рдВрдЪрд╛ рдПрдХ рд╡рд┐рд╢реЗрд╖ рд╡рд┐рд╢реЗрд╖рддрд╛ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ -
рдЗрдореАрдбрд┐рдПрдЯрдкреЛрд╕реНрдЯрдбреЙрдЯрдЖрд░реНрдЯ рд╢реНрд░рджреНрдзрд╛рдВрдЬрд▓рд┐ , рдЬреЛ рдПрдХ рд╡реНрдпрд╛рд╡рд╕рд╛рдпрд┐рдХ рдЗрдХрд╛рдИ рдХреЗ рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рд▓рд╛рдЧреВ рд╣реЛрдиреЗ рдкрд░, рдЗрд╕ рдХреНрд╖реЗрддреНрд░ рдХреЗ рд╕рдВрдкрд╛рджрдХ рдХреЛ рдЫреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдлрд╝реЛрдХрд╕ рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп, рддреБрд░рдВрдд рдореВрд▓реНрдп рдкрд░рд┐рд╡рд░реНрддрди рдХреА рдПрдХ рдШрдЯрдирд╛ рдХреЛ рдмрдврд╝рд╛рддрд╛ рд╣реИред
рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдРрд╕реЗ рд╕рдордп рдереЗ рдЬрдм рдпрд╣ рд╡рд┐рд╢реЗрд╖рддрд╛ рд╕рдВрджрд┐рдЧреНрдз рд▓рд╛рдн рд▓реЗрдХрд░ рдЖрдИред рдореИрдВ рдЙрди рд▓реЛрдЧреЛрдВ рдХреЛ рдпрд╛рдж рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ, рдЬрд┐рдирдХреЗ рдкрд╛рд╕ 80 рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдирд┐рдпрдо рд╣реИрдВ, рдЬреЛ рдХрд┐ рддрддреНрдХрд╛рд▓ рдлреЙрд░реНрдо рдкрд░ рдлрд╝реАрд▓реНрдбреНрд╕ рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рдХреЛ рд╕рдорд╛рдпреЛрдЬрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП ImmediatePostDataAttribute рдХреЗ рд╕рд╛рде рд╕рдВрдпреЛрдЬрди рдХрд░рддреЗ рд╣реИрдВ (рдореБрдЭреЗ рдкрддрд╛ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдпрд╣ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдкреНрдпрд╛рд░ рд╣реИ, рдпрд╛ рд╢реБрд░реБрдЖрддреА рд╡реНрдпрд╛рд╡рд╕рд╛рдпрд┐рдХ рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдХреА рд╡рдЬрд╣ рд╕реЗ)ред рд╣рдореЗрдВ рдереЛрдбрд╝рд╛ рдкрд╕реАрдирд╛ рдмрд╣рд╛рдирд╛ рдкрдбрд╝рд╛ рддрд╛рдХрд┐ рдЙрддреНрдкрд╛рджрдХрддрд╛ "рд╕реНрддрд░" рдкрд░ рд░рд╣реЗ, рдФрд░ рдЗрд╕ рддрд░рд╣ рдХреЗ рдЖрдЧреНрд░рд╣ рд╕реЗ рдлреЙрд░реНрдо "рдорд░" рдирд╣реАрдВ рдЧрдпрд╛ред
рддрдереНрдп рдпрд╣ рд╣реИ рдХрд┐ рдЬрдм рдЦреЗрддреЛрдВ рдореЗрдВ рд╕реЗ рдХрд┐рд╕реА рдПрдХ рдХреЗ рдореВрд▓реНрдп рдХреЛ рдмрджрд▓рддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рдкрд╣рд▓реЗ рдЗрди рд╕рднреА рд╕реМ рдирд┐рдпрдореЛрдВ ("рдмреНрд░реВрдЯ рдлреЛрд░реНрд╕" рджреГрд╖реНрдЯрд┐рдХреЛрдг) рдХреЛ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрдирд╛ рд╣реЛрдЧрд╛, рдФрд░ рдлрд┐рд░, рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛, рдЦреЗрддреЛрдВ рдХреЗ рд░рдВрдЧреЛрдВ рдФрд░ рдкрд╣реБрдВрдЪ рдХреЛ рдмрджрд▓рдирд╛ рдФрд░ рд╕рдмрд╕реЗ рдЦрд░рд╛рдм, рдмрд╛рд░-рдмрд╛рд░ рдлреЙрд░реНрдо рдХреА рд╕рдВрд░рдЪрдирд╛ рдХрд╛ рдкреБрдирд░реНрдирд┐рд░реНрдорд╛рдг рдХрд░рдирд╛ред рд╣рдорд╛рд░реЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд╡рд┐рд╡рд░рдг рдореЗрдВ рдмрд╣реБрдд рдЕрдзрд┐рдХ рдЬрд╛рдиреЗ рдХреЗ рдмрд┐рдирд╛, рдореЗрд░рд╛ рдХрд╣рдирд╛ рд╣реИ рдХрд┐ рд╣рдо рдореБрдЦреНрдп рд░реВрдк рд╕реЗ рдлрд╝реАрд▓реНрдб рд╕рдВрдкрд╛рджрдХреЛрдВ рдХреЗ "рдЖрд▓рд╕реА" рдирд┐рд░реНрдорд╛рдг, рд╕рдХреНрд╖рдо рдХреИрд╢рд┐рдВрдЧ рдФрд░ рдкреНрд░рдкрддреНрд░ рддрддреНрд╡ рдХреА рд╕реНрдерд┐рддрд┐ рдХреЛ рдмрджрд▓рдиреЗ рдХреЗ рдХрд╛рд░рдг рд╣реА рдЕрдкрдиреЗ рд▓рдХреНрд╖реНрдп рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдореЗрдВ рдХрд╛рдордпрд╛рдм рд░рд╣реЗ, рдпрджрд┐ рдЗрд╕рдХреА рд╡рд░реНрддрдорд╛рди рд╕реНрдерд┐рддрд┐ рдирд┐рдпрдо рджреНрд╡рд╛рд░рд╛ рдЧрдгрдирд╛ рдХреА рдЧрдИ рдирдИ рд╕реЗ рднрд┐рдиреНрди рд╣реЛред рд╕рдВрднрд╡рддрдГ, рд╕рд┐рджреНрдзрд╛рдВрдд рд░реВрдк рдореЗрдВ, рдпрд╣ рд╕рдВрднрд╡ рд╣реЛрдЧрд╛ рдХрд┐ рдХреБрдЫ рдирд┐рдпрдореЛрдВ рдХреЛ рдЪрд╛рд▓рд╛рдХ рдЙрддреНрддрд░рд╛рдзрд┐рдХрд╛рд░рд┐рдпреЛрдВ рдХреА рдорджрдж рд╕реЗ рд╕рдорд╛рдкреНрдд рдХрд░ рджрд┐рдпрд╛ рдЬрд╛рдП рдЬреЛ HSS рдХреА рдХрд╕реМрдЯреА рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░реЗрдВрдЧреЗ рдФрд░ рдЗрд╕реЗ рддрднреА рд▓рд╛рдЧреВ рдХрд░реЗрдВрдЧреЗ рдЬрдм рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХреНрд╖реЗрддреНрд░, brr рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ ...
рдЬрд╛рд░реА рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП ...
рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рднрд╛рдЧреЛрдВ рдореЗрдВ, рдореИрдВ рдЖрдкрдХреЛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдЯрд╛рдбреЗрдЯрд╛ рдХреЗ рдЙрджреНрджреЗрд╢реНрдп рдФрд░ рдХреНрд╖рдорддрд╛рдУрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рдмрддрд╛рдиреЗ рдХреА рдЙрдореНрдореАрдж рдХрд░рддрд╛ рд╣реВрдВ, рдЬреЛ рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рд╣рдорд╛рд░реЗ рд░реВрдк рдЖрдЦрд┐рд░рдХрд╛рд░ рдХреИрд╕реЗ рджрд┐рдЦреЗрдВрдЧреЗ рдФрд░ рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд░реЗрдВрдЧреЗред рдореБрдЭреЗ рдпрд╣ рднреА рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╕рдореБрджрд╛рдп рдХреЛ рдбреЛрдореЗрди рдЕрд╡рдпрд╡ рддрдХрдиреАрдХ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рдЬрд╛рдирдиреЗ рдореЗрдВ рд░реБрдЪрд┐ рд╣реЛрдЧреА (рд╕рднреА рдХреЛ рдХрдХреНрд╖рд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдлрд┐рд░ рдХреБрдЫ рдЗрдВрдЯрд░рдлреЗрд╕ рдЕрдЪрд╛рдирдХ рд╕рдордЭ рд╕реЗ рдмрд╛рд╣рд░ рд╣реЛ рдЧрдП), рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдореИрдВрдиреЗ рд╡реНрдпрд╛рд╡рд╕рд╛рдпрд┐рдХ рд╕рдВрд╕реНрдерд╛рдУрдВ рдХреЛ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ред рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ, рд╡реНрдпрд╛рд╡рд╕рд╛рдпрд┐рдХ рд╕рдВрд╕реНрдерд╛рдУрдВ рдХреЗ рдкреБрди: рдкреНрд░рдпреЛрдЬреНрдп рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЗ рдЕрдзрд┐рдХ рд▓рдЪреАрд▓реЗ рдФрд░ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдирд┐рд░реНрдорд╛рдг рдХреЗ рд▓рд┐рдП рдЗрд╕ рддрдХрдиреАрдХ рдХрд╛ рдЖрд╡рд┐рд╖реНрдХрд╛рд░ рд╣рдорд╛рд░реЗ рджреНрд╡рд╛рд░рд╛ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдЕрднреА рдХреЗ рд▓рд┐рдП, рдХреЛрдИ рднреА рд╡реНрдпрдХреНрддрд┐
рдЕрдВрдЧреНрд░реЗрдЬреА рдореЗрдВ рдХреЛрдб рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдпрд╛
рдкреНрд░рд▓реЗрдЦрди рдкрд░ рдПрдХ рд▓реЗрдЦ рджреЗрдЦ рд╕рдХрддрд╛ рд╣реИред