рдЙрджреНрдпрдо рдЕрдиреБрдкреНрд░рдпреЛрдЧ рд╡рд┐рдХрд╛рд╕ рдореЗрдВ рдУрдЖрд░рдПрдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛

рдУрдЖрд░рдПрдо рдХреЗ рдкреЗрд╢реЗрд╡рд░реЛрдВ рдФрд░ рд╡рд┐рдкрдХреНрд╖реЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╣реБрдд рд╕рд╛рд░реЗ рд╡рд┐рд╡рд╛рдж рд╣реИрдВ, рдЪрд▓реЛ рдИрдЖрд░рдкреА рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдореЗрдВ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рдкреЗрд╢реЗрд╡рд░реЛрдВ рдкрд░ рдзреНрдпрд╛рди рджреЗрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддреЗ рд╣реИрдВред

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

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

рдЫрд╡рд┐
рдореИрдВ CodeFirst рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХрд╛ рд╕рдорд░реНрдердХ рд╣реВрдВ, рдЬреИрд╕рд╛ рдХрд┐ рдпрд╣ рдХреЗрд╡рд▓ рд╡реНрдпрд╛рд╡рд╕рд╛рдпрд┐рдХ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдХреА рд╕рдВрд░рдЪрдирд╛ рдХреА рдпреЛрдЬрдирд╛ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд╣реА рд╣реИред
рд╣рдорд╛рд░реЗ рдЕрдВрддрд┐рдо рдордВрдЪ рдореЗрдВ, рдПрдХ рд▓рдВрдмреЗ рд╡рд┐рдХрд▓реНрдк рдХреЗ рдмрд╛рдж, рд╣рдордиреЗ ORM DataObjects.Net рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛, рд▓реЗрдХрд┐рди рд▓реЗрдЦ рдХрд╛ рд╕рд╛рд░ рдХрд┐рд╕реА рднреА ORM рдХреЗ рдЕрдиреБрдпрд╛рдпреА рдХреЗ рд▓рд┐рдП рд╕реНрдкрд╖реНрдЯ рд╣реЛрдЧрд╛, рдпрд╣ NHibernate, Entity Framework, рдЖрджрд┐ рд╣реЛред

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

рдбреЗрдЯрд╛ рдореЙрдбрд▓ рдбрд┐рдЬрд╛рдЗрди


рдПрдХ рдореЙрдбрд▓ рдмрдирд╛рдиреЗ рд╕реЗ рд╕реА # рдореЗрдВ рдХрдХреНрд╖рд╛рдПрдВ рдмрдирд╛ рд░рд╣рд╛ рд╣реИ, рдлрд╝реАрд▓реНрдб рдЧреБрдг, рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ, рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХреЛ рдЬреЛрдбрд╝ рд░рд╣рд╛ рд╣реИред
рдПрдХ рд░рд┐рдпрд▓ рдПрд╕реНрдЯреЗрдЯ рдПрдЬреЗрдВрд╕реА рдХреЗ рд▓рд┐рдП рдХреНрд▓рд╛рд╕ рдореЙрдбрд▓
рдХреЛрдб рдореЗрдВ, рдпрд╣ рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:
/// <summary> ///    /// </summary> [HierarchyRoot] [Index("CreationTime", Clustered = true)] public abstract class RentOfferBase : DocumentBase { тАж /// <summary> ///  /// </summary> [Hidden] [Field(Length = 64)] public string Name { get; set; } /// <summary> ///   /// </summary> [Field] public DateTime CreationTime { get; set; } /// <summary> ///  /// </summary> [Field(Scale = 0)] public decimal Price { get; set; } /// <summary> ///  /// </summary> [Field(Scale = 0)] public decimal Comission { get; set; } /// <summary> ///  ///      /// </summary> [Field(Nullable = false)] public EnCurrency Currency { get; set; } /// <summary> ///  ///   /// </summary> [Field] public MetroLine Line { get; set; } /// <summary> ///  ///       /// </summary> [Field] public MetroStation Metro { get; set; } } 

рдХреБрдЫ рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ рдЬреЛ рдЗрд╕реЗ рдзреНрдпрд╛рди рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдордЭ рдореЗрдВ рдЖрддреА рд╣реИрдВ:

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

рд╡рд┐рд░рд╛рд╕рдд

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

рдХреИрдкреНрд╕реВрд▓реАрдХрд░рдг

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

ClassTable
рдпрд╣ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдкрджрд╛рдиреБрдХреНрд░рдо рдХреА рдЬрдбрд╝ рд╕реЗ рд╢реБрд░реВ рд╣реЛрдХрд░, рдкреНрд░рддреНрдпреЗрдХ рд╡рд░реНрдЧ рдХреЗ рд▓рд┐рдП рдПрдХ рддрд╛рд▓рд┐рдХрд╛ рдмрдирд╛рддрд╛ рд╣реИ
ClassTable рд╡рдВрд╢рд╛рдиреБрдХреНрд░рдо рдореЙрдбрд▓ рдХреЗ рд▓рд┐рдП рддрд╛рд▓рд┐рдХрд╛ рд╕реНрдХреАрдорд╛

SingleTable
рд╕рднреА рдкрджрд╛рдиреБрдХреНрд░рдо рд╡рд░реНрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рддрд╛рд▓рд┐рдХрд╛
рд╕рд┐рдВрдЧрд▓рдЯреЗрдмрд▓ рдЗрдирд╣реЗрд░рд┐рдЯреЗрдВрд╕ рдореЙрдбрд▓ рдХреЗ рд▓рд┐рдП рдЯреЗрдмрд▓ рд╕реНрдХреАрдорд╛

ConcreteTable
рдкреНрд░рддреНрдпреЗрдХ рдЧреИрд░-рд╕рд╛рд░ рд╡рд░реНрдЧ рдХреЗ рд▓рд┐рдП рддрд╛рд▓рд┐рдХрд╛ рдХреЗ рдЕрдиреБрд╕рд╛рд░
рдареЛрд╕ рдпреЛрдЬрдирд╛рдмрджреНрдз рдореЙрдбрд▓ рдХреЗ рд▓рд┐рдП рдЯреЗрдмрд▓ рд╕реНрдХреАрдорд╛

рдпрд╣ рд╕рдм рдХреНрдпреЛрдВ рдЬрд░реВрд░реА рд╣реИ?

рдХреБрдЫ рдорд╛рдорд▓реЛрдВ рдореЗрдВ, рд╕рд╛рдорд╛рдиреНрдпреАрдХреГрдд рдбреЗрдЯрд╛ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдирд╛ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИ, рдФрд░ рджреВрд╕рд░реЛрдВ рдореЗрдВ, рдЕрдиреБрдХреВрд▓рди рдХреЗ рд▓рд┐рдП, рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдХреЛ рд╡рдВрдЪрд┐рдд рдХрд░рдирд╛ рдЕрдзрд┐рдХ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИред рдУрдЖрд░рдПрдо рдХрд╛ рд▓рд╛рдн рдпрд╣ рд╣реИ рдХрд┐ рдпрд╣ рдмрд╣реБрдд рд╕рд░рд▓рддрд╛ рд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ - рдмрд╕ рдПрдХ рдкрдВрдХреНрддрд┐ рдХреЛ рдмрджрд▓рдХрд░ - рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ
 [HierarchyRoot] 
рджреНрд╡рд╛рд░рд╛ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛
 [HierarchyRoot(InheritanceSchema.SingleTable)] 
рдФрд░
 [HierarchyRoot(InheritanceSchema.ConcreteTable)] 
рдХреНрд░рдорд╢рдГред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдХреЗ рдмрд╛рдж рд╕реЗ рдЪреВрдБрдХрд┐ рд╣рдо рдХреНрд╡реЗрд░реАрдЬрд╝ SQL рдореЗрдВ рдирд╣реАрдВ рд▓рд┐рдЦ рд░рд╣реЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдЙрдкрдпреБрдХреНрдд рдЗрдирд╣реЗрд░рд┐рдЯреЗрдВрд╕ рд╕реНрдХреАрдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рднреА рдкреНрд░рд╢реНрдиреЛрдВ рдХрд╛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдЕрдиреБрд╡рд╛рдж рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдпрд╛рдиреА LINQ рдореЗрдВ рд▓рд┐рдЦреЗ рдФрд░ ORM рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХрд╛рдо рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдХрд┐рд░рд╛рдпреЗ рдХреЗ рдкреНрд░рд╕реНрддрд╛рд╡реЛрдВ / рдЕрдкрд╛рд░реНрдЯрдореЗрдВрдЯ / рдХрдорд░реЛрдВ рдХреА рдПрдХ рд░рд┐рдкреЛрд░реНрдЯ рдкреНрд░рддреНрдпреЗрдХ рдпреЛрдЬрдирд╛ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░реЗрдЧреА рдФрд░ рдЗрд╕рдореЗрдВ рдХрд┐рд╕реА рднреА рд╕рдВрд╢реЛрдзрди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реЛрдЧреАред

рд╡реНрдпрд╛рдкрд╛рд░ рддрд░реНрдХ рдЬреЛрдбрд╝рдирд╛


рдкреНрд░рдкрддреНрд░ рдШрдЯрдирд╛рдПрдБ

рдЕрдзрд┐рдХрд╛рдВрд╢ рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо (рдЬреИрд╕реЗ рд╣рдорд╛рд░реЗ) рдореЙрдбрд▓ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдлрд╝реЙрд░реНрдо рдЙрддреНрдкрдиреНрди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдкрд░реНрдпрд╛рдкреНрдд рд╕реНрдерд┐рд░ рд░реВрдк рдирд╣реАрдВ рд╣реИрдВ, рдЪрд▓реЛ рдЗрд╕реЗ рдкреБрдирд░реНрдЬреАрд╡рд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рдЧрддрд┐рдХреА рдЬреЛрдбрд╝рддреЗ рд╣реИрдВред рд╣рдорд╛рд░реА рдкреНрд░рдгрд╛рд▓реА рдореЗрдВ, рд╣рдордиреЗ рдПрдХ рдлреЙрд░реНрдо рдЗрд╡реЗрдВрдЯ рд╣реИрдВрдбрд▓рд░ рдХреЗ рд░реВрдк рдореЗрдВ рдЗрд╕ рддрд░рд╣ рдХреА рдЕрд╡рдзрд╛рд░рдгрд╛ рдкреЗрд╢ рдХреА - рдПрдХ рд╡рд░реНрдЧ рдЬреЛ рдПрдХ рд╣реИрдВрдбрд▓рд░ рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рд╕рдВрдХреЗрдд рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рдХреМрди рд╕реЗ рдлрд╝реАрд▓реНрдб рдШрдЯрдирд╛рдУрдВ рд╕реЗ рдЬреБрдбрд╝реЗ рд╣реИрдВред рдХреНрд▓рд╛рдЗрдВрдЯ рдкрд░ рдбреЗрдЯрд╛ рдХреЛ рдмрджрд▓рдХрд░, рдбреЗрдЯрд╛ рдХреЛ рд╕рд░реНрд╡рд░ рдкрд░ рднреЗрдЬрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдбрд┐рд╕реЗрд░рд┐рдПрд▓рд╛рдЗрдЬрд╝реЗрд╢рди, .net рдСрдмреНрдЬреЗрдХреНрдЯ рдХреА рдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ, рдХреНрд░рдорд╛рдВрдХрди, рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЛ рдбреЗрдЯрд╛ рднреЗрдЬрддреЗ рд╣реИрдВред

рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╣рдо рдлреЙрд░реНрдо рдкрд░ рд▓рд╛рдЧрдд рдХреЛ рдмрджрд▓рддреЗ рд╣реИрдВ, рддреБрд░рдВрдд, рдордХреНрдЦреА рдкрд░, рдкреНрд░рддрд┐рд╢рдд рдкреБрдирд░реНрдЧрдгрдирд╛ рд╣реЛрддрд╛ рд╣реИред рдФрд░ рдЗрд╕рдХреЗ рд╡рд┐рдкрд░реАрддред рдФрд░ рдпрд╣рд╛рдВ рдмрддрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ рдХрд┐ рдХреИрд╕реЗ рдпрд╣ рдХреЛрдб рдореЗрдВ рджрд┐рдЦрддрд╛ рд╣реИ:
 /// <summary> ///    Price  ComissionPercent /// </summary> [OnFieldChange("Price", "ComissionPercent")] public class RentalPriceFormEvent : RentOfferFormEventsBase<RentOfferBase> { public override void OnFieldChange(RentOfferBase item) { if (item.ComissionPercent != decimal.Zero) { item.Comission = item.Price * 0.01m * item.ComissionPercent; } } } 

рдпрд╣ рдмреНрдпрд╛рдЬ рдФрд░ рдХреАрдордд рдкрд░ рдХрдореАрд╢рди рдХреА рдЧрдгрдирд╛ рдХрд░рдиреЗ рдХреА рдШрдЯрдирд╛ рд╣реИ, рддрд░реНрдХ рдмрд╣реБрдд рд╕рд░рд▓ рд╣реИ, рд▓реЗрдХрд┐рди рд╣рдо рдпрд╣рд╛рдВ рдХреЛрдИ рднреА рдХреЛрдб рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВред рдпрджрд┐ рдЖрд╡рд╢реНрдпрдХ рд╣реЛ, рддреЛ рдбреЗрдЯрд╛рдмреЗрд╕ рдпрд╛ рд╡реЗрдм рд╕реЗрд╡рд╛ рдХреЗ рд▓рд┐рдП рдПрдХ рдХреНрд╡реЗрд░реА рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░реЗрдВред

рдмрд╣реБрд░реВрдкрддрд╛

рдкрд┐рдЫрд▓реЗ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рд╣рдордиреЗ рдХреЗрд╡рд▓ рдПрдХ RentOfferBase рдЗрдХрд╛рдИ рдХреЗ рд▓рд┐рдП рдПрдХ рдИрд╡реЗрдВрдЯ рд▓рд┐рдЦрд╛, рдпрд╣ рдИрд╡реЗрдВрдЯ рд╡рд╛рд░рд┐рд╕ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░реЗрдЧрд╛, рд▓реЗрдХрд┐рди рдХреНрдпрд╛ рд╣реЛрдЧрд╛ рдпрджрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдореВрд▓реНрдп / рдХрдореАрд╢рди рдХреЗ рд╕рд╛рде рдХрдИ рд╕рдВрд╕реНрдерд╛рдПрдВ рд╣реИрдВ? рдХреНрдпрд╛ рдЖрдк рд╣рд░ рдмрд╛рд░ рдПрдХ рд╣реА рдХреЛрдб рд▓рд┐рдЦрддреЗ рд╣реИрдВ?
рдПрдХ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдЪреБрдиреЗрдВ
 /// <summary> ///   /// </summary> public interface IWithComission { /// <summary></summary> decimal Price { get; set; } /// <summary></summary> decimal Comission { get; set; } /// <summary>%</summary> decimal ComissionPercent { get; set; } } 
рдФрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдШрдЯрдирд╛ рдХреЛ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрдирд╛
 /// <summary> ///    RentalPrice  ComissionPercent /// </summary> /// <typeparam name="TEntity"> </typeparam> [OnFieldChange("Price", "ComissionPercent")] public class RentalPriceFormEvent<TEntity> : RentOfferFormEventsBase<TEntity> where TEntity : DocumentBase, IWithComission { public override void OnFieldChange(TEntity item) { if (item.ComissionPercent != decimal.Zero) { item.Comission = item.Price * 0.01m * item.ComissionPercent; } } } 

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

рдЗрдХрд╛рдИ рдШрдЯрдирд╛рдПрдБ

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

 /// <summary> ///       /// </summary> [FireOn(EntityEventAction.Updated)] public class CheckStatus<TEntity> : IEntityEvent<TEntity> where TEntity : EntityBase, IWithStatus { /// <summary> ///   /// </summary> /// <param name="item">    </param> public void Execute(TEntity item) { if (item.Status.Name == "" && !Roles.IsUserInRole("admin")) { throw new ErrorException("     ''!"); } } /// <summary> ///       /// </summary> public EntityEventAction CurrentAction { get; set; } } 


рдЬреЛ рдпрд╣ рдЬрд╛рдВрдЪрддрд╛ рд╣реИ рдХрд┐ рдпрджрд┐ рдкрд░рд┐рд╡рд░реНрддрдирд╢реАрд▓ рдЗрдХрд╛рдИ "рдмрдВрдж" рд╕реНрдерд┐рддрд┐ рдореЗрдВ рд╣реИ рдФрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХ рднреВрдорд┐рдХрд╛ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдирд╣реАрдВ рд╣реИ, рддреЛ рдПрдХ рдЕрдкрд╡рд╛рдж рдлреЗрдВрдХ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЗрд╕реА рддрд░рд╣ рд╕реЗ рдШрдЯрдирд╛рдУрдВ рдХреЛ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдЗрдХрд╛рдИ рдШрдЯрдирд╛рдУрдВ рдХреЛ рдЙрдирдХреЗ рд╕рд╛рде рд╕рдВрдЧрдд рд╕рднреА рд╕рдВрд╕реНрдерд╛рдУрдВ рдкрд░ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ IWithStatus рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдирд╛ред

рдХреЛрдб рдЬреБрджрд╛рдИ

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

рдлрд┐рд▓реНрдЯрд░

ORM рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рдЖрдк рдРрд╕реЗ рд╢рдХреНрддрд┐рд╢рд╛рд▓реА .net рдЯреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреИрд╕реЗ рдлрд╝рд┐рд▓реНрдЯрд░рд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдПрдХреНрд╕рдкреНрд░реЗрд╢рдирдЯреНрд░реАрд╕ред рд╣рдо рд╡реНрдпрд╛рдкрд╛рд░ рддрд░реНрдХ рдХреА рд╕реАрдорд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП рдЕрдЧреНрд░рд┐рдо рдореЗрдВ рдПрдХ рдлрд╝рд┐рд▓реНрдЯрд░рд┐рдВрдЧ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ, рд╣рдо рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдЧреНрд░рд┐рдб рдХреЛ рдлрд╝рд┐рд▓реНрдЯрд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЕрдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреА рджреГрд╢реНрдпрддрд╛ рдХреЛ рд╕реАрдорд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдХреЛрдб рд╕реЗ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдлрд╝рд┐рд▓реНрдЯрд░рд┐рдВрдЧ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдкреНрд░рдмрдВрдзрдХ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:
 public static Expression<Func<TOffer, bool>> FilterOffers<TOffer>() where TOffer : RentOfferBase { return a => a.Creator.SysName == SecurityHelper.CurrentLogin || a.Status.Name == ""; } 


рдпрд╣ рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдлрд╝рд┐рд▓реНрдЯрд░ рд╣реИ рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреЗрд╡рд▓ рдЖрдкрдХреЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рддрдХ рдпрд╛ "рд╡рд╛рд╕реНрддрд╡рд┐рдХ" рдХреА рд╕реНрдерд┐рддрд┐ рд╡рд╛рд▓реЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рддрдХ рд╣реА рд╕реАрдорд┐рдд рд╣реИред
рдпрд╣ рдлрд╝рд┐рд▓реНрдЯрд░ рдЕрдм рдХрд┐рд╕реА рднреА рдЗрдХрд╛рдИ рд╕реЗ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдЬреБрдбрд╝рд╛ рдирд╣реАрдВ рд╣реИ, рд╕рд╛рдорд╛рдиреНрдп рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗрд╡рд▓ рдпрд╣ рдХрд╣рддрд╛ рд╣реИ рдХрд┐ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рд░реЗрдВрдЯрдСрдлрд╝рд░рдмреЗрд╕ рдФрд░ рдЗрд╕рдХреЗ рдХрд┐рд╕реА рднреА рд╡рдВрд╢рдЬ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЬрд┐рдирдХреЗ рд▓рд┐рдП рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдмрд╛рдж рдореЗрдВ рдЖрд╡реЗрджрди рд╕реЗрдЯрдЕрдк рдХреЗ рд╕рдордп рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред

рд╣рдо рджреВрд╕рд░реЗ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдПрдХ рдлреЙрд░реНрдо рдлрд╝реАрд▓реНрдб рдХреЛ рдлрд╝рд┐рд▓реНрдЯрд░ рдХрд░рдирд╛ рднреА рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ
 [FilterFor(typeof(RentOfferBase), "Metro")] public static Expression<Func<MetroStation, bool>> MetroFilter([Source("Line")]MetroLine line) { return a => line == null || a.MetroLine == line; } 


рдпрд╣рд╛рдВ рд╣рдо рдЪрдпрдирд┐рдд рд╕реНрдЯреЗрд╢рдиреЛрдВ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдореЗрдЯреНрд░реЛ рд╕реНрдЯреЗрд╢рдиреЛрдВ рдХреЛ рдлрд╝рд┐рд▓реНрдЯрд░ рдХрд░рддреЗ рд╣реИрдВ, рдЙрди рд╕рдВрд╕реНрдерд╛рдУрдВ рдФрд░ рдлрд╝реАрд▓реНрдбреНрд╕ рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рддреЗ рд╣реИрдВ рдЬреЛ рдорд╛рдиреЛрдВ рдФрд░ рдлрд╝рд┐рд▓реНрдЯрд░рд┐рдВрдЧ рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдХреЗ рд╕реНрд░реЛрдд рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред

рд╡реНрдпрд╡рд╕реНрдерд╛ рдкрд░рд┐рд╡рд░реНрддрди рдХрд░рдирд╛


рдЕрдиреНрдп рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рд╡рд┐рдкрд░реАрдд, рдПрдХ рдИрдЖрд░рдкреА рдкреНрд░рдгрд╛рд▓реА рдХреЛ рд╡реНрдпрд╛рд╡рд╕рд╛рдпрд┐рдХ рддрд░реНрдХ рдФрд░ рдбреЗрдЯрд╛ рдореЙрдбрд▓ рдореЗрдВ рд▓рдЧрд╛рддрд╛рд░ рдмрджрд▓рд╛рд╡ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдФрд░ рдпрд╣ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╕рд░рд▓ рдФрд░ рд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдПред

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

рд╣рдореЗрдВ CodeFirst рдореЗрдВ рдХреНрдпрд╛ рдорд┐рд▓рддрд╛ рд╣реИ:


рд▓реЗрдХрд┐рди рдЕрдкрдбреЗрдЯ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреНрдпрд╛?

рдкреНрд░рд╡рд╛рд╕

рдХрд▓реНрдкрдирд╛ рдХрд░реЗрдВ рдХрд┐ рд╣рдо рдПрдХ рдЕрдкрдбреЗрдЯ рддреИрдпрд╛рд░ рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдЬрд┐рд╕реЗ рдЧреНрд░рд╛рд╣рдХ рдЕрдкрдиреЗ рдбреЗрдЯрд╛рдмреЗрд╕ рдкрд░ рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░рддрд╛ рд╣реИред рд╕рд░рд▓ рдорд╛рдЗрдЧреНрд░реЗрд╢рди рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд╣реИрдВред рдпрд╛рдиреА рдпрджрд┐ рд╣рдордиреЗ рдореЙрдбрд▓ рдореЗрдВ рд╕реБрд░рдХреНрд╖рд┐рдд рдкрд░рд┐рд╡рд░реНрддрди рдХрд┐рдП рд╣реИрдВ, рддреЛ ORM рд╕реНрд╡рдпрдВ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЛ рдирдП рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рд▓реЗ рдЬрд╛рдПрдЧрд╛ред
рд╕реБрд░рдХреНрд╖рд┐рдд рдкрд░рд┐рд╡рд░реНрддрдиред рдпреЗ рд╡реЗ рдкрд░рд┐рд╡рд░реНрддрди рд╣реИрдВ рдЬреЛ рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реЗ рдбреЗрдЯрд╛ рдХреЛ рдирд╣реАрдВ рд╣рдЯрд╛рддреЗ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП:

рдмреЗрд╢рдХ, рдЧрдВрднреАрд░ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЛ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рддреЗ рд╕рдордп рдпреЗ рдХреНрд░рд┐рдпрд╛рдПрдВ рдкрд░реНрдпрд╛рдкреНрдд рдирд╣реАрдВ рд╣реИрдВ, рдлрд╝реАрд▓реНрдб / рдЗрдХрд╛рдИ рдХрд╛ рдирд╛рдо рдмрджрд▓рдиреЗ рдкрд░ рдХреНрдпрд╛ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП?
  1. рдирд╛рдо рдмрджрд▓рдиреЗ рд╡рд╛рд▓реЗ рд░реАрдлреИрдХреНрдЯрд░рд┐рдВрдЧ рд▓рд╛рдЧреВ рдХрд░реЗрдВ (рд╣рдо ReSharper рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ)ред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╣рдорд╛рд░реЗ рдХреЛрдб рдореЗрдВ рдЗрд╕ рдХреНрд╖реЗрддреНрд░ рдХреЗ рд╕рднреА рдЙрдкрдпреЛрдЧреЛрдВ рдХрд╛ рдирд╛рдо рдмрджрд▓рд╛ рдЧрдпрд╛ рд╣реИред
    рдЬрд┐рд╕рдореЗрдВ рдлрд┐рд▓реНрдЯрд░реНрд╕, рдлреЙрд░реНрдо рдЗрд╡реЗрдВрдЯреНрд╕, рдПрдВрдЯрд┐рдЯреА рдЗрд╡реЗрдВрдЯреНрд╕ рдореЗрдВ рдмрджрд▓рд╛ рд╣реБрдЖ рдирд╛рдо рд╢рд╛рдорд┐рд▓ рд╣реИред рдкрд╛рда рдХреЗ рд░реВрдк рдореЗрдВ рд╣реЛрдиреЗ рд╡рд╛рд▓реА рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдореЗрдВ рдХреЗрд╡рд▓ рдлрд╝реАрд▓реНрдб рдирд╛рдо рдЬрдЯрд┐рд▓рддрд╛ рдХрд╛ рдХрд╛рд░рдг рдмрди рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдпрджрд┐ рдлрд╝реАрд▓реНрдб рдирд╛рдо рдкрд░реНрдпрд╛рдкреНрдд рдЕрджреНрд╡рд┐рддреАрдп рд╣реИ, рддреЛ рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реЛрдЧреАред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдирд╛рдо рдмрджрд▓рдиреЗ рдХреЗ рдмрд╛рдж, рдЖрдк рд╕рдВрдХрд▓рди рд╢реБрд░реВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдореЗрдВ рдлрд╝реАрд▓реНрдб рдХрд╛ рд╕рд╣реА рдирд╛рдо рдмрджрд▓рд╛ рдЧрдпрд╛ рд╣реИред
  2. рд╕рдВрдХреЗрдд рдирд╛рдо рдЬреЛрдбрд╝реЗрдВред рд╕рдВрдХреЗрдд - ORM рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдВрдХреЗрдд рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд╕рд╛рде рдХреНрдпрд╛ рдХрд░рдирд╛ рд╣реИ рдЕрдЧрд░ рд╡рд░реНрдЧ-рдирд┐рд░реНрдорд┐рдд рд╕реНрдХреАрдорд╛ рдФрд░ рд╡рд╛рд╕реНрддрд╡рд┐рдХ SQL рд╕реНрдХреАрдорд╛ рдХреЗ рдмреАрдЪ рдЕрдВрддрд░ рд╣реИрдВред рдлрд╝реАрд▓реНрдб рдХрд╛ рдирд╛рдо рдмрджрд▓рдиреЗ рдХрд╛ рд╕рдВрдХреЗрдд рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рд╣реИ:
     public class RenameFieldUpgrader : ModelUpgraderBase { public override Version Version { get { return new Version("3.5.0.8764"); } } public override void AddUpgradeHints(ISet<UpgradeHint> hints) { hints.Add(new RenameFieldHint(typeof(RentOfferBase), "OldName", "NewName")); } } 

рдЗрд╕реА рддрд░рд╣ рдХреЗ рд╕рдВрдХреЗрдд рд╕реЗ, рд╣рдо рдПрдХ рдлрд╝реАрд▓реНрдб / рдЗрдХрд╛рдИ рдХреЛ рд╣рдЯрд╛рддреЗ рд╣реБрдП, рдПрдХ рдЗрдХрд╛рдИ рдХрд╛ рдирд╛рдо рдмрджрд▓рдиреЗ рдХреА рдУрд░ рдЗрд╢рд╛рд░рд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдпрджрд┐ рдРрд╕рд╛ рдХреЛрдИ рд╕рдВрдХреЗрдд рд╣реИ, рддреЛ рдЕрдЧрд▓реА рд╢реБрд░реБрдЖрдд рдореЗрдВ, ORM рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд▓рд┐рдП рд░реАрдиреЗрдорд┐рдВрдЧ рд░реАрдлреИрдХреНрдЯрд░рд┐рдВрдЧ рд▓рд╛рдЧреВ рдХрд░реЗрдЧрд╛ рдФрд░ рдбреЗрдЯрд╛ рдХреЛ рд╕рд╣реЗрдЬрдиреЗ рдХреЗ рд╕рд╛рде рдлрд╝реАрд▓реНрдб рдХрд╛ рдирд╛рдо рдмрджрд▓ рджреЗрдЧрд╛ред

рдкрд░рд┐рдгрд╛рдо


ORM рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рд╣рдордиреЗ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛:

Source: https://habr.com/ru/post/In140713/


All Articles