рдЗрдХрд╛рдИ рдврд╛рдВрдЪреЗ рдФрд░ рдЕрджреНрд╡рд┐рддреАрдп рдмрд╛рдзрд╛рдУрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╕рдордп рдХреБрдЫ рдЕрдкреНрд░рд╛рдкреНрдп рд╣реИрдХ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ

рдЫрд╡рд┐
рдХреБрдЫ рд╕рд╛рд▓ рдкрд╣рд▓реЗ, рдЬрдм рдкреЗрдбрд╝ рдмрдбрд╝реЗ рдФрд░ рд╣рд░реЗ рд╣реЛрддреЗ рдереЗ, рддреЛ рджреБрд╖реНрдЯ рджрд╛рдиреА рдореЗрд░реЗ рдкрд╛рд╕ рдЖрддреЗ рдФрд░ рдХрд╣рддреЗ - рд╣рд╛рдБ, рдореБрдЭреЗ рдорд┐рд▓ рдЧрдпрд╛! рдореБрдЭреЗ рдПрдХ рдмрд╣реБрдд рд╣реА рдЕрдЬреАрдм рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рдЕрдкрдиреЗ рд╕рд╣рдпреЛрдЧрд┐рдпреЛрдВ рдХреА рдорджрдж рдХрд░рдиреА рдереАред

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

рдФрд░ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ - рдЗрд╕ рдореЗрдЧрд╛-рдЯреВрд▓ рдХреЛ рдЬрд▓реНрджреА рд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдерд╛ред рдлрд┐рд░ рд╕рдорд░реНрдерди рдХреЛ рдорд▓реЗрд╢рд┐рдпрд╛ рдпрд╛ рднрд╛рд░рддреАрдпреЛрдВ рдХреЛ рд╕рд╕реНрддреЗ рдореЗрдВ рд╣рд╕реНрддрд╛рдВрддрд░рд┐рдд рдХрд░рдирд╛ред рдЗрд╕рд▓рд┐рдП рдЗрд╕реЗ рдпрдерд╛рд╕рдВрднрд╡ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдХрд░рдиреЗ рдХреА рднреА рд╕рд┐рдлрд╛рд░рд┐рд╢ рдХреА рдЧрдИ рдереАред



рдЖрдкрдиреЗ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рдорд╛рдзрд╛рди рдХреИрд╕реЗ рд╢реБрд░реВ рдХрд┐рдпрд╛?


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

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

рдореИрдВ рдзреНрдпрд╛рди рджреЗрддрд╛ рд╣реВрдВ - рд╕рд╣реА рдирд┐рд░реНрдгрдпред рдФрд░ рд╕рдордп рд╕реЗ рдкрд╣рд▓реЗ рдЕрдиреБрдХреВрд▓рди рдХреЛ рдмреБрд░рд╛рдИ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИред

рдЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЗ рд╕рд╛рде рдХреНрдпрд╛ рдЖрдпрд╛


рдЫрд╡рд┐
рдореБрдЭреЗ рдЬрд▓рдиреЗ рдХреА рдЧрдВрдз рдЖрддреА рд╣реИред рдореИрдВ рд░рд╕реЛрдИ рдореЗрдВ рдЬрд╛рддреА рд╣реВрдВ, рдорд╛рдВрд╕ рдХреЛ рд▓рдЯрдХреА рд╕реЗ рдирд┐рдХрд╛рд▓рддреА рд╣реВрдВред рдореИрдВрдиреЗ рджреЛ рд╣рд╛рдереЛрдВ рд╡рд╛рд▓реА рддрд▓рд╡рд╛рд░ рд╕реЗ рдПрдХ рдХреЛ рдЬрд▓рд╛ рджрд┐рдпрд╛ рдФрд░ рдЙрд╕реЗ рддреБрд░рдВрдд рдирд┐рдЧрд▓ рд▓рд┐рдпрд╛, рдХреНрдпреЛрдВрдХрд┐ рдЙрдЧреНрд▓реЗрдХ рдХрдорд░реЗ рдореЗрдВ рдШреБрд╕ рдЧрдпрд╛ред рд╣реЙрдЯ! рд▓реЗрдХрд┐рди рдореИрдВ рдЪрд┐рддреНрд░рд┐рдд рдХрд░рддрд╛ рд╣реВрдВред
"рдпрд╣ рдХреНрдпрд╛ рд╣реИ, рдорд╛рд╕реНрдЯрд░?"
- рд╕реНрдЯреАрдореА рдЪрд╛рдЗрдиреАрдЬред рдирд╡реАрдирддрдо рд╕рдирдХ!
- рдмрд╛рдврд╝ рди рдХрд░реЗрдВ - рдЖрдк рдХреЗрд╡рд▓ рд╢рдмреНрджрдХреЛрд╢ рд╕реЗ рдлреИрд╢рди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирддреЗ рд╣реИрдВ, - рдпрд╣ рдХреЛрд╢рд┐рд╢ рдХрд░рддрд╛ рд╣реИред "рд╣рд╛рд▓рд╛рдВрдХрд┐ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╕реНрд╡рд╛рджрд┐рд╖реНрдЯ!"


рдпрд╣ рдХрд╛рдЧрдЬ рдкрд░ рдЪрд┐рдХрдирд╛ рдерд╛ ... рдЕрджреНрд╡рд┐рддреАрдп рдмрд╛рдзрд╛рдУрдВ, рд╕рднреА tsiferki рдЦрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд╣рдордд рдирд╣реАрдВ рдереЗред

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

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

рдХрдИ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдордиреЛрд░рдВрдЬрди рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдирд╛ рдЧреИрд░-рддреБрдЪреНрдЫ рдерд╛, рдФрд░ рдорд▓реЗрд╢рд┐рдпрд╛рдИ рдЗрди рд╣реИрдХ рдХрд╛ рд╕рдорд░реНрдерди рдХреИрд╕реЗ рдХрд░реЗрдВрдЧреЗ рдпрд╣ рдПрдХ рдмрдбрд╝рд╛ рд╕рд╡рд╛рд▓ рд╣реИред

рдФрд░ рдЗрд╕ рдкрд▓ рдореЗрдВ, рдЗрди рдмреБрд░реА рдЖрддреНрдорд╛рдУрдВ рдиреЗ рдПрдХ рд▓реЛрд╣рд╛ рдФрд░ рдПрдХ рд╕реЛрд▓реНрдбрд░рд┐рдВрдЧ рд▓реЛрд╣рд╛ рд▓рд╛рдпрд╛! рдореЗрд░реЗ рдкрд╛рд╕ рдкрд╣реБрдБрдЪ рдЧрдпрд╛ред

рдХреНрдпрд╛ рдХрд░рдирд╛ рдерд╛


рдЫрд╡рд┐
рдХрд░рдкреЗрдЯ рдЕрднрджреНрд░ рд╣реИред
- рд╣рд╛рдирд┐рдХрд╛рд░рдХ! рдЙрдиреНрд╣реЛрдВрдиреЗ рдПрдХ рд╕реМ рдХрд┐рд▓реЛрдЧреНрд░рд╛рдо рдКрд░реНрдЬрд╛ рдорд╛рдВрдЧреА, рд▓реЗрдХрд┐рди рдХрд┐рддрдиреА! рдЖрдк рдореБрдЭреЗ рдЗрддрдирд╛ рдмрддрд╛рдПрдВ - рдЖрдкрдХреЛ рдмрд╣реБрдд рдХреБрдЫ рдЪрд╛рд╣рд┐рдП, рдХреНрдпреЛрдВ рдХрд░рдкреЗрдЯ рдХреЛ рдзреЛрдЦрд╛ рджреЗрдВ? рдореБрдЭреЗ рдЦреЗрдж рдирд╣реАрдВ рд╣реИ, рдореБрдЭреЗ рдкрд╛рдБрдЪ рдЯрди рдЪрд╛рд╣рд┐рдП - рдмрд╕, рдХрд╣реЛ, рдХрд░рдкреЗрдЯ, рд╣рдореЗрдВ рдкрд╛рдБрдЪ рдЯрди рджреЗрдВ ... рд╡реЗ рд╣рд╛рдирд┐рдХрд╛рд░рдХ рдФрд░ рд╣рд╛рдирд┐рдХрд╛рд░рдХ рд╣реИрдВ!

рдЬреИрд╕рд╛ рдХрд┐ рдпрд╣ рдирд┐рдХрд▓рд╛, рдХреИрдВрд╕рдЪреЗрдВрдЬ рдЗрдХрд╛рдЗрдпрд╛рдВ рдЗрдХрд╛рдИ рдврд╛рдВрдЪреЗ рдореЗрдВ рдкреНрд░рджрд╛рди рдирд╣реАрдВ рдХреА рдЬрд╛рддреА рд╣реИрдВред рдФрд░ рдЗрд╕рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рдЬрдЯрд┐рд▓ рд╣реЛрдиреЗ рдХрд╛ рдореМрдХрд╛ рдирд╣реАрдВ рджреЗрдЧреАред

рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рдЕрдиреБрдорд╛рди рд▓рдЧрд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдореБрдЭреЗ рдЖрд╡рд┐рд╖реНрдХрд╛рд░ рдХрд░рдирд╛ рдерд╛ред

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

рдХрд╣рд╛рдБ рд▓реЗрдЯрд╛рдУрдЧреЗ?

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


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

рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рдореИрдиреБрдЕрд▓ рдФрд░ рдЧреБрдЧреНрд▓рд┐рдВрдЧ рдзреВрдореНрд░рдкрд╛рди рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рд╣рдо рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддреЗ рд╣реИрдВ:

class MyEntry { public EntityObject entity; // entity object,  public string name; //    EF public Dictionary<string, EntityKey> refmap; // foreign keys -  - ,   //         FK      public Dictionary<string, EntityObject> objmap; //   public Dictionary<EntityObject, string> keymap; //     public MyEntry(string s, EntityObject o) { entity = o; name = s; refmap = new Dictionary<string, EntityKey>(); objmap = new Dictionary<string, EntityObject>(); keymap = new Dictionary<EntityObject, string>(); } } 


рдЕрдм рд╣рдо рдЬрд╛рджреВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ - рдЕрдВрддрд┐рдо SaveChanges () рдХреЗ рдмрд╛рдж рд╕рдВрджрд░реНрдн рдореЗрдВ рдХреНрдпрд╛ рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ рдерд╛:

  // t  derived class  EntityContext var added = t.ObjectStateManager.GetObjectStateEntries(EntityState.Added); 


рддрд╛рдХрд┐ рд╣рдо рдЕрдм рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░ рд╕рдХреЗрдВ рдХрд┐ рдпрд╣ рдХреНрдпрд╛ рдерд╛ рдФрд░ рдЗрд╕реЗ рд╡рд┐рд╕реНрддреГрдд рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░ рджрд┐рдпрд╛ред рдХреБрдЫ рдЗрд╕ рддрд░рд╣ред

  List<MyEntry> allDataToProceed = new List<MyEntry>(); //     foreach (var a in added) { //  EF        .  //      if (!(a.IsRelationship)) { //   -    "Foo", Foo a MyEntry e = new MyEntry(a.EntitySet.Name, a.Entity); allDataToProceed.Add(e); //     foreign keys    IEnumerable<IRelatedEnd> relEnds = ((IEntityWithRelationships)a.Entity).RelationshipManager.GetAllRelatedEnds(); foreach (var rel in relEnds) { //     FKs List<EntityObject> fks = new List<EntityObject>(); foreach (var obj in rel) fks.Add((EntityObject)obj); //         -  var relname = rel.RelationshipName; if (fks.Count == 1) { //   -    ,   if (fks[0].EntityKey.EntityKeyValues != null) e.refmap[relname] = fks[0].EntityKey; else { //     -  , //    .  -   //      //       FK     e.keymap[fks[0]] = fks[0].EntityKey.EntitySetName; e.objmap[relname] = fks[0]; } } } } } 


рдХреЗрд╡рд▓ рдПрдХ рдЪреАрдЬ рдмрдЪреА рд╣реИ рдЬреЛ рд╕рдВрджрд░реНрдн рдХреЛ рдЬреАрд╡рди рдореЗрдВ рд╡рд╛рдкрд╕ рд▓рд╛рддреА рд╣реИред

  //       foreach (var a1 in added) a1.Delete(); t.SaveChanges(); 


рдФрд░ рдПрдХ рднреВрдд рднрдЧрд╛рдиреЗ рдХрд╛ рд╕рддреНрд░ рд╢реБрд░реВ рдХрд░реЗрдВ - рдФрд░ рдпрд╣ рдпрд╣рд╛рдБ рдХреНрдпрд╛ рдЕрдЬреАрдм рд░реЗрдВрдЧрддрд╛ рд╣реИ, рдФрд░ рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрд╛рдд - рдЗрд╕реЗ рдХрд╣рд╛рдВ рд░рдЦрд╛ рдЬрд╛рдПред

рдШрд░ рдкрд░ рдЪрд┐рд▓реНрд▓рд╛рдПрдВ рднреА рдирд╣реАрдВ

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


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

  //           FK //       List<EntityObject> usedInRefs = new List<EntityObject>(); foreach (var a1 in allDataToProceed) { foreach (var dup in a1.objmap.Values) usedInRefs.Add(dup); } //   for (int j = 0; j < allDataToProceed.Count; ++j) { if (usedInRefs.Contains(allDataToProceed[j].entity)) { allDataToProceed.RemoveAt(j); --j; } } 


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

  //     -      foreach (var a1 in allDataToProceed) { try { //    FKs  master/slave IEnumerable<IRelatedEnd> relEnds = ((IEntityWithRelationships)a1.entity).RelationshipManager.GetAllRelatedEnds(); foreach (var rel in relEnds) { var relname = rel.RelationshipName; EntityKey key = null; //          EF //         if (a1.refmap.ContainsKey(relname)) key = a1.refmap[relname]; EntityObject o = key != null ? o = (EntityObject)t.GetObjectByKey(key) : null; //     -      // master/slave  if (o == null && a1.objmap.ContainsKey(relname)) { o = a1.objmap[relname]; if (a1.keymap.ContainsKey(o)) t.AddObject(a1.keymap[o], o); else o = null; } //    -    if (o != null) rel.Add(o); } //       t.AddObject(a1.name, a1.entity); t.SaveChanges(); } catch (Exception e2) { //        -     //      added = t.ObjectStateManager.GetObjectStateEntries(EntityState.Added); foreach (var a2 in added) a2.Delete(); //   -    ,      } } 


рджреЗрдЦрд╛ред рд╣рдордиреЗ рдХрд░ рджрд┐рдЦрд╛рдпрд╛!

рд╢рд╛рдпрдж рдпрд╣ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХрд┐рд╕реА рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рд╣реЛрдЧрд╛ред

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


All Articles