рдкрд╛рда рдХрд╛ рдЙрджреНрджреЗрд╢реНрдп : рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рдмреБрдирд┐рдпрд╛рджреА рд╕рд┐рджреНрдзрд╛рдВрддреЛрдВ рдХреЛ рд╕реАрдЦрдирд╛ред рд╕рдВрдмрдВрдзрдкрд░рдХ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЙрдбрд▓ рдХрд╛ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рд╡рд┐рд╡рд░рдгред рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░реЗрдВ (рддрд╛рд▓рд┐рдХрд╛рдПрдБ, рд╡реАрдПрд╕ 2012 рдореЗрдВ рд▓рд┐рдВрдХ)ред INSERT, UPDATE, DELETE, SELECT рдХреЛ рдЬреЛрдбрд╝рддрд╛ рд╣реИред LinqToSql рдФрд░ Linq рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ред рдПрдХ рднрдВрдбрд╛рд░, IRepository, SqlRepository рдХрд╛ рдирд┐рд░реНрдорд╛рдгред
рдПрдХ DB рдХреНрдпрд╛ рд╣реИ
рдПрдХ рд░рд┐рд▓реЗрд╢рдирд▓ рдбреЗрдЯрд╛рдмреЗрд╕ рдПрдХ рд░рд┐рд▓реЗрд╢рдирд▓ рдбреЗрдЯрд╛ рдореЙрдбрд▓ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рдбреЗрдЯрд╛рдмреЗрд╕ рд╣реИред рд░рд┐рд╢реНрддреЗрджрд╛рд░реА рдЕрдВрдЧреНрд░реЗрдЬреА рд╕реЗ рдПрдХ рд░рд┐рд╢реНрддрд╛ (рд░рд┐рд▓реЗрд╢рдирд╢рд┐рдк) рд╣реИред рд╕рдВрдмрдВрдзред
рдЯреЗрдмрд▓
рдпрд╣ рддрд╛рд▓рд┐рдХрд╛ рд╣реИ:

рдПрдХ рдЯреЗрдмрд▓ рдореЗрдВ рдХреЙрд▓рдо рдФрд░ рд░реЛ рд╣реЛрддреЗ рд╣реИрдВред рдХреЙрд▓рдо рдореЗрдВ рдЧреБрдг рд╣реЛрддреЗ рд╣реИрдВ - рдирд╛рдо, рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░ред
рдЯреЗрдмрд▓реНрд╕ рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЧреБрдг рд╣реЛрдиреЗ рдЪрд╛рд╣рд┐рдП:
- рддрд╛рд▓рд┐рдХрд╛ рдХрд╛ рдПрдХ рдирд╛рдо (рдЕрджреНрд╡рд┐рддреАрдп) рд╣реИ
- рдХреЛрдИ рджреЛ рдкрдВрдХреНрддрд┐рдпрд╛рдБ рдПрдХ рдЬреИрд╕реА рдирд╣реАрдВ рд╣реИрдВ
- рдХреЙрд▓рдо рдХреЗ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдирд╛рдо рд╣реИрдВ (рджреЛ рд╕рдорд╛рди рдХреЙрд▓рдо рдирд╣реАрдВ рд╣реИрдВ)
- рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХрд╛ рдХреНрд░рдо рдордирдорд╛рдирд╛ рд╣реИ (рдпрд╛рдиреА рдпрджрд┐ рдЫрдБрдЯрд╛рдИ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдирд╣реАрдВ рд╣реИ рддреЛ рдкрдВрдХреНрддрд┐ рдХреНрд░рдо рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рдирд╣реАрдВ рд░рдЦрдирд╛ рдЪрд╛рд╣рд┐рдП)
рддрд╛рд▓рд┐рдХрд╛ рд╕рдВрд░рдЪрдирд╛ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд░реВрдк рдореЗрдВ рд▓рд┐рдЦреА рдЬрд╛ рд╕рдХрддреА рд╣реИ:
- рд╕реНрддрдВрдн рдирд╛рдо
- рдЗрд╕ рдХреЙрд▓рдо рдХреЗ рд▓рд┐рдП рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░
рд╕рдВрдЪрд╛рд░
рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдХреЗ рдмреАрдЪ рд╕рдВрдмрдВрдз (рд░рд┐рд▓реЗрд╢рди) рд╣реИрдВред рдХрдиреЗрдХреНрд╢рди рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЗ рдкрд╛рд╕ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП:
- рдПрдХ рдкреНрд░рд╛рдердорд┐рдХ рдХреБрдВрдЬреА рдПрдХ рддрд╛рд▓рд┐рдХрд╛ рдХреЗ рд╕реНрддрдВрднреЛрдВ (рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ) рдХрд╛ рдПрдХ рд╕реЗрдЯ рд╣реИ рдЬреЛ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд░реВрдк рд╕реЗ рдПрдХ рдкрдВрдХреНрддрд┐ рдХреА рд╡рд┐рд╢рд┐рд╖реНрдЯрддрд╛ рдХрд╛ рдирд┐рд░реНрдзрд╛рд░рдг рдХрд░рддреА рд╣реИред рдпрд╣ рдЖрдорддреМрд░ рдкрд░ рдПрдХ рдПрдХрд▓ рдХреНрд╖реЗрддреНрд░ рд╣реИ рдЬрд┐рд╕реЗ рдЖрдИрдбреА рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ рдСрдЯреЛ-рдЗрдиреНрдХреНрд░реАрдореЗрдВрдЯ рд╣реИ, рдЕрд░реНрдерд╛рдд рдЬрдм рдПрдХ рд░рд┐рдХреЙрд░реНрдб рдЬреЛрдбрд╝рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА рдЬрд╛ рд░рд╣реА рд╣реИ, 1, 2, 3, 4 ... n + 1 рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рд╡рд╣рд╛рдВ рдбрд╛рд▓рд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд╣рд╛рдВ n рдЕрдВрддрд┐рдо рдЬреЛрдбрд╝реЗ рдЧрдП рдЖрдИрдбреА рдХрд╛ рдореВрд▓реНрдп рд╣реИред
- рдПрдХ рд╡рд┐рджреЗрд╢реА рдХреБрдВрдЬреА рдПрдХ рддрд╛рд▓рд┐рдХрд╛ рдХреЗ рд╕реНрддрдВрднреЛрдВ (рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ) рдХрд╛ рдПрдХ рд╕реЗрдЯ рд╣реИ рдЬреЛ рдХрд┐рд╕реА рдЕрдиреНрдп рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рдкрдВрдХреНрддрд┐ рдХреА рд╡рд┐рд╢рд┐рд╖реНрдЯрддрд╛ рдХреЛ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд░реВрдк рд╕реЗ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддреА рд╣реИред рдлрд┐рд░ рд╕реЗ рдпрд╣ рдЖрдорддреМрд░ рдкрд░ рдПрдХ рдПрдХрд▓ рдлрд╝реАрд▓реНрдб рд╣реИ рдЬрд┐рд╕реЗ [рдЯреЗрдмрд▓ рдиреЗрдо] рдЖрдИрдбреА рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ рд▓реЗрдХрд┐рди рдпрд╣ рдСрдЯреЛ-рдЗрдВрдХреНрд░реАрдореЗрдВрдЯ рдирд╣реАрдВ рд╣реИред
- рдкреНрд░рд╛рдердорд┐рдХ рдХреБрдВрдЬреА рдФрд░ рд╡рд┐рджреЗрд╢реА рдХреБрдВрдЬреА рдХреЗ рдмреАрдЪ рд╕рдВрдмрдВрдз рдкрдВрдЬреАрдХреГрдд рд╣реИред
рддреАрди рдкреНрд░рдХрд╛рд░ рдХреЗ рдХрдиреЗрдХреНрд╢рди рд╣реИрдВ:
- рдПрдХ-рд╕реЗ-рдПрдХред рдпрд╛рдиреА рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рдПрдХ рдкрдВрдХреНрддрд┐ рджреВрд╕рд░реА рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рдПрдХ рдкрдВрдХреНрддрд┐ рд╕реЗ рдореЗрд▓ рдЦрд╛рддреА рд╣реИред рдпрд╣ рд╢рд╛рдпрдж рд╣реА рдХрднреА рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдПрдХ рддрд╛рд▓рд┐рдХрд╛ рдбреЗрдЯрд╛ рдореЗрдВ рдФрд░ рджреВрд╕рд░реЗ рдореЗрдВ - рдПрдХ рд╣реА рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрддрд┐рд░рд┐рдХреНрдд рдбреЗрдЯрд╛ред рдпрджрд┐ рдЖрд╡рд╢реНрдпрдХ рд╣реЛ, рддреЛ рдХрдо рдбреЗрдЯрд╛ рдореЗрдВ рд╣реЗрд░рдлреЗрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдпрд╣ рд╡рд┐рдХрд▓реНрдк рдЖрд╡рд╢реНрдпрдХ рд╣реИред
- рдПрдХ-рд╕реЗ-рдХрдИред рддрд╛рд▓рд┐рдХрд╛ рдП рдореЗрдВ рдПрдХ рдкрдВрдХреНрддрд┐ рддрд╛рд▓рд┐рдХрд╛ рдмреА рдореЗрдВ рдПрдХ рдпрд╛ рдПрдХ рд╕реЗ рдЕрдзрд┐рдХ рдкрдВрдХреНрддрд┐рдпреЛрдВ рд╕реЗ рдореЗрд▓ рдЦрд╛рддреА рд╣реИред рд▓реЗрдХрд┐рди рддрд╛рд▓рд┐рдХрд╛ рдП рдореЗрдВ рдХреЗрд╡рд▓ рдПрдХ рдкрдВрдХреНрддрд┐ рддрд╛рд▓рд┐рдХрд╛ рдмреА рдореЗрдВ рдПрдХ рдкрдВрдХреНрддрд┐ рд╕реЗ рдореЗрд▓ рдЦрд╛рддреА рд╣реИред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рддрд╛рд▓рд┐рдХрд╛ рдмреА рдореЗрдВ рдПрдХ рд╡рд┐рджреЗрд╢реА рдХреБрдВрдЬреА рд╣реИ рдЬреЛ рддрд╛рд▓рд┐рдХрд╛ рдП рдореЗрдВ рдкреНрд░рд╡реЗрд╢ рдХреА рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкрд╣рдЪрд╛рди рдХрд░рддреА рд╣реИред
- рдХрдИ-рд╕реЗ-рдЕрдиреЗрдХред рддрд╛рд▓рд┐рдХрд╛ A рдореЗрдВ рдПрдХ рдкрдВрдХреНрддрд┐ рддрд╛рд▓рд┐рдХрд╛ B рдореЗрдВ рдПрдХ рдпрд╛ рдПрдХ рд╕реЗ рдЕрдзрд┐рдХ рдкрдВрдХреНрддрд┐рдпреЛрдВ рд╕реЗ рдореЗрд▓ рдЦрд╛рддреА рд╣реИ, рдЬреЛ рд╡рд┐рдкрд░реАрдд рдореЗрдВ рд╕рдЪ рд╣реИред рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рдПрдХ рдЕрддрд┐рд░рд┐рдХреНрдд рддрд╛рд▓рд┐рдХрд╛ рдЗрд╕рдХреА рдкреНрд░рд╛рдердорд┐рдХ рдХреБрдВрдЬреА рдХреЗ рд╕рд╛рде рдмрдирд╛рдИ рдЧрдИ рд╣реИ, рдФрд░ рддрд╛рд▓рд┐рдХрд╛ A рдФрд░ B рдХреА рджреЛ рд╡рд┐рджреЗрд╢реА рдХреБрдВрдЬрд┐рдпрд╛рдБ рд╣реИрдВред
рдЕрдм рдпрд╣ рдХреИрд╕реЗ рдХрд░рдирд╛ рд╣реИ рдЗрд╕рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рддреЗ рд╣реИрдВред
рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдПрдХ рд╕рд░рд▓ рд╕реНрдХреАрдорд╛ рдмрдирд╛рдирд╛
рдЖрдЗрдП рд╡реАрдПрд╕ 2012 рдореЗрдВ рдПрдХ рдбреЗрдЯрд╛рдмреЗрд╕ рдмрдирд╛рдПрдВ:

рдЪрд▓рд┐рдП рдЗрд╕реЗ LessonProject рдХрд╣рддреЗ рд╣реИрдВ, рдФрд░ 3 рднреВрдорд┐рдХрд╛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдФрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдкрдВрдХреНрддрд┐ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВред
рдПрдХ рднреВрдорд┐рдХрд╛ рддрд╛рд▓рд┐рдХрд╛ рдмрдирд╛рдПрдБ:


рд╕реНрдЯреНрд░рд┐рдВрдЧ рдорд╛рдиреЛрдВ рдХреЗ рд▓рд┐рдП, рд╣рдо nvarchar (n) рдкреНрд░рдХрд╛рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рдЬрд╣рд╛рдВ n рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреА рдЕрдзрд┐рдХрддрдо рд▓рдВрдмрд╛рдИ рд╣реИ, рдЖрдорддреМрд░ рдкрд░ 50 рд╕реЗ 500 рддрдХред рдмрдбрд╝реЗ рдкрд╛рда рд╕реНрдЯреНрд░рд┐рдВрдЧреНрд╕ рдХреЗ рд▓рд┐рдП, nvarchar (MAX) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдкреНрд░рд╛рдердорд┐рдХ рдХреБрдВрдЬреА рд╕реЗрдЯ рдХрд░реЗрдВ:

ID рдХреЗ рд▓рд┐рдП рд╕реНрд╡рдд: рд╡реЗрддрди рд╡реГрджреНрдзрд┐ рд╕реЗрдЯ рдХрд░реЗрдВ:

рдЗрд╕реА рддрд░рд╣, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рддрд╛рд▓рд┐рдХрд╛ рдмрдирд╛рдПрдБ:
рдореИрджрд╛рди | рдлрд╝реАрд▓реНрдб рдкреНрд░рдХрд╛рд░ |
рдЖрдИрдбреА | рдкреВрд░реНрдгрд╛рдВрдХ |
рдИрдореЗрд▓ | рдирд╡рд░рдЪ (150) |
рдкрд╛рд╕рд╡рд░реНрдб | рдирд╡рд░рдЪ (50) |
AddedDate | datetime |
ActivatedDate | рдбреЗрдЯрд╛рдЗрдо (рд╢реВрдиреНрдп) |
ActivatedLink | рдирд╡рд░рдЪ (50) |
LastVisitDate | рдбреЗрдЯрд╛рдЗрдо (рд╢реВрдиреНрдп) |
AvatarPath | рдирд╡рд░рдЪ (150) (рдЕрд╢рдХреНрдд) |
UserRole рддрд╛рд▓рд┐рдХрд╛ рдмрдирд╛рдПрдБ:
рдореИрджрд╛рди | рдлрд╝реАрд▓реНрдб рдкреНрд░рдХрд╛рд░ |
рдЖрдИрдбреА | рдкреВрд░реНрдгрд╛рдВрдХ |
UserID | рдкреВрд░реНрдгрд╛рдВрдХ |
рднреВрдорд┐рдХрд╛-рдЖрдИрдбреА | рдкреВрд░реНрдгрд╛рдВрдХ |
рд▓рд┐рдВрдХ рдЬреЛрдбрд╝реЗрдВ:

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

INSERT рдФрд░ UPDATE рд╡рд┐рд╢рд┐рд╖реНрдЯрддрд╛ рдЧреБрдгреЛрдВ рдореЗрдВ, рдЕрдкрдбреЗрдЯ / рдбрд┐рд▓реАрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреИрд╕реНрдХреЗрдб рдЧреБрдгреЛрдВ рдкрд░ рд╕реЗрдЯ рдХрд░реЗрдВ:

рдпрд╣ рдЖрд╡рд╢реНрдпрдХ рд╣реИ рддрд╛рдХрд┐ рднреВрдорд┐рдХрд╛ рддрд╛рд▓рд┐рдХрд╛ рд╕реЗ рдХрд┐рд╕реА рд╕реНрддрдВрдн рдХреЛ рдмрджрд▓рддреЗ / рд╣рдЯрд╛рддреЗ рд╕рдордп, рдЗрд╕ рдкрдВрдХреНрддрд┐ рд╕реЗ рд╕рдВрдмрджреНрдз рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдкрдВрдХреНрддрд┐ рддрд╛рд▓рд┐рдХрд╛ рдХреА рд╕рднреА рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреЛ рдмрджрд▓ рджрд┐рдпрд╛ рдЬрд╛рдП рдпрд╛ рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЬрд╛рдПред
рд╣рдо рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рддрд╛рд▓рд┐рдХрд╛ рдХреЗ рд╕рд╛рде рдПрдХ рд╕рдорд╛рди рд╕рдВрдмрдВрдз рд╕реНрдерд╛рдкрд┐рдд рдХрд░рддреЗ рд╣реИрдВред
рдЗрд╕ рдкреНрд░рдХрд╛рд░, UserRole рддрд╛рд▓рд┐рдХрд╛ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рднреВрдорд┐рдХрд╛ рдФрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдХреЗ рдХрдИ рд╕рдВрдмрдВрдз рд╣реИрдВред рдпрд╛рдиреА рдПрдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреА рдПрдХ рд╕реЗ рдЕрдзрд┐рдХ рднреВрдорд┐рдХрд╛ рд╣реЛ рд╕рдХрддреА рд╣реИ, рдФрд░ рдХрдИ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреА рдПрдХ рд╣реА рднреВрдорд┐рдХрд╛ рд╣реЛ рд╕рдХрддреА рд╣реИред
рд╕реЗрд▓реЗрдХреНрдЯ, INSERT, UPDATE, DELETEред
рд╕рдВрдмрдВрдзрдкрд░рдХ рдбреЗрдЯрд╛рдмреЗрд╕ SQL тАЛтАЛрдХреНрд╡реЗрд░реА рднрд╛рд╖рд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред
рдбреЗрдЯрд╛ рд╣реЗрд░рдлреЗрд░ рдХреЗ рд▓рд┐рдП 4 рдореБрдЦреНрдп рдХрдорд╛рдВрдб рд╣реИрдВ - SELECT, INSERT, UPDATE, DELETE
рдЪрдпрди рдХрд░реЗрдВ - рдбреЗрдЯрд╛ рдФрд░ рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдХрд╛ рдЪрдпрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред
рдПрдХ рдЙрджрд╛рд╣рд░рдг:
SELECT * FROM User
INSERT - рдПрдХ рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреЛ рдЬреЛрдбрд╝рдирд╛
рдПрдХ рдЙрджрд╛рд╣рд░рдг:
INSERT INTO Role (Code, Name) VALUES (тАЬadminтАЭ, тАЬтАЭ)
рдЕрджреНрдпрддрди - рдПрдХ рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рдорд╛рди рдмрджрд▓ рд░рд╣рд╛ рд╣реИ
рдПрдХ рдЙрджрд╛рд╣рд░рдг:
UPDATE User SET Password=тАЭpassword1тАЭ WHERE ID=1
DELETE - рдХрд┐рд╕реА рддрд╛рд▓рд┐рдХрд╛ рд╕реЗ рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреЛ рд╣рдЯрд╛рдПрдВ
рдПрдХ рдЙрджрд╛рд╣рд░рдг:
DELETE FROM User WHERE ID =1
рдиреЛрдЯ: рдЖрдк рд▓рд┐рдВрдХ рдкрд░ SQL рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рдЬрд╛рди рд╕рдХрддреЗ рд╣реИрдВ:http://www.w3schools.com/sql/http://codingcraft.ru/sql_queries.phpLinqToSQL рдФрд░ Linqред
рдЪрд▓рд┐рдП ClassLibrary рдкреНрд░рдХрд╛рд░ рдХреЗ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП LessonProject.Model рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдмрдирд╛рддреЗ рд╣реИрдВред
SQL рд╡рд░реНрдЧ рдкреНрд░рдХрд╛рд░ рдореЗрдВ рдПрдХ LINQ рдЬреЛрдбрд╝реЗрдВ, LessonProejctDb.dbml рдкрд░ рдХреЙрд▓ рдХрд░реЗрдВ

рдСрдмреНрдЬреЗрдХреНрдЯ рдЦреЛрд▓реЗрдВ, рд╕рднреА рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ рдФрд░ рдЗрд╕реЗ рдорд╛рдЙрд╕ рдХреЗ рд╕рд╛рде рдХреИрдирд╡рд╛рд╕ рдкрд░ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░реЗрдВ:

рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдЗрд╕ рддрд░рд╣ рдХреЗ рд╕рд░рд▓ рдХрд╛рд░реНрдпреЛрдВ рдХреА рдорджрдж рд╕реЗ рд╣рдо рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВ:
- рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рдХрдХреНрд╖рд╛рдПрдВ
- рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдФрд░ рд▓рд┐рдВрдХ рдХрд╛ рджреГрд╢реНрдп рдкреНрд░рджрд░реНрд╢рди
рднреВрдорд┐рдХрд╛ рдФрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рдХреБрдЫ рдбреЗрдЯрд╛ рдЬреЛрдбрд╝реЗрдВ:
1 | рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХ | рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХ |
2 | рдЧреНрд░рд╛рд╣рдХ | рдЧреНрд░рд╛рд╣рдХ |
1 | chernikov@gmail.com | 123456 | 1/1/2012 12:00:00 рдкреВрд░реНрд╡рд╛рд╣реНрди | рд╢реВрдиреНрдп | 123456 | рд╢реВрдиреНрдп | рд╢реВрдиреНрдп |
2 | chernikov2@gmail.com | 123456 | 1/1/2012 12:00:00 рдкреВрд░реНрд╡рд╛рд╣реНрди | рд╢реВрдиреНрдп | 123456 | рд╢реВрдиреНрдп | рд╢реВрдиреНрдп |
рдФрд░ UserRole
рдЖрдИрдбреА | UserID | рднреВрдорд┐рдХрд╛-рдЖрдИрдбреА |
1 | 1 | 1 |
2 | 1 | 2 |
3 | 2 | 2 |
рдХрдВрд╕реЛрд▓ рдкреНрд░реЛрдЬреЗрдХреНрдЯ Lesson3 рдмрдирд╛рдПрдБ рдФрд░ LessonProject.Model рдХрдиреЗрдХреНрдЯ рдХрд░реЗрдВред рдЕрд╕реЗрдВрдмрд▓реА рд╕рд┐рд╕реНрдЯрдо рдХреЛ рдЬреЛрдбрд╝реЗрдВред рд╡рд┐рдиреНрдпрд╛рд╕ рдФрд░ рд╕рд┐рд╕реНрдЯрдоред Data.Linqред рд╣рдо рд╕рдВрджрд░реНрдн рдХреЛ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рднреВрдорд┐рдХрд╛ рдбреЗрдЯрд╛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддреЗ рд╣реИрдВ:
class Program { static void Main(string[] args) { var context = new LessonProjectDbDataContext(ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString); var roles = context.Roles.ToList(); foreach (var role in roles) { Console.WriteLine("{0} {1} {2}", role.ID, role.Code, role.Name); } Console.ReadLine(); } }
рднреВрдорд┐рдХрд╛ рдореЗрдВ рдПрдХ рдкрдВрдХреНрддрд┐ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП, рдпрд╣ рдХрд░реЗрдВ:
var newRole = new Role { Code = "manager", Name = "" }; context.Roles.InsertOnSubmit(newRole); context.Roles.Context.SubmitChanges();
рднреВрдорд┐рдХрд╛ рдореЗрдВ рдПрдХ рдкрдВрдХреНрддрд┐ рдХреЛ рд╣рдЯрд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдпрд╣ рдХрд░реЗрдВ:
var role = context.Roles.Where(p => p.Name == "").FirstOrDefault(); if (role != null) { context.Roles.DeleteOnSubmit(role); context.Roles.Context.SubmitChanges(); }
рдбреЗрдЯрд╛ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП, рдпрд╣ рдХрд░реЗрдВ:
var role = context.Roles.Where(p => p.Name == "").FirstOrDefault(); if (role != null) { role.Name = ""; context.Roles.Context.SubmitChanges(); }
рдбреЗрдЯрд╛ рд╣реЗрд░рдлреЗрд░ рдХреЗ рд▓рд┐рдП, Linq рдХреНрд╡реЗрд░реА рднрд╛рд╖рд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╣рдо Linq рдХреЗ рдХреБрдЫ рдмреБрдирд┐рдпрд╛рджреА рдХрд╛рд░реНрдпреЛрдВ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВрдЧреЗред Linq IQueryable рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рдкреНрд░рдХрд╛рд░реЛрдВ рдкрд░ рд▓рд╛рдЧреВ рд╣реЛрддрд╛ рд╣реИ <>
- .Where () рдореБрдЦреНрдп рдлрд╝рд┐рд▓реНрдЯрд░рд┐рдВрдЧ рдлрд╝рдВрдХреНрд╢рди рд╣реИред IQueryable рдкреНрд░рдХрд╛рд░ рд▓реМрдЯрд╛рддрд╛ рд╣реИред рдЕрдВрджрд░ рдХреА рд╕реНрдерд┐рддрд┐ рдХреЛ рдПрдХ рдмреВрд▓рд┐рдпрди рдорд╛рди (рдмреВрд▓) рд╡рд╛рдкрд╕ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред
var roles = context.Roles.Where(p => p.Name == "")
- .FirstOrDefault () - .First (), .Single (), .SingleOrDefault () - рдкрд╣рд▓рд╛ рдпрд╛ рдПрдХрдорд╛рддреНрд░ рд░рд┐рдХреЙрд░реНрдб рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВред рдпрджрд┐ рдХреЛрдИ рд░рд┐рдХреЙрд░реНрдб рдирд╣реАрдВ рд╣реИ, рддреЛ FirstOrDefault () рдпрд╛ SingleOrDefault () рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЕрд╢рдХреНрдд рд╣реЛ рдЬрд╛рдПрдЧрд╛ (рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдХрд╛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдорд╛рди [рдбрд┐рдлрд╝реЙрд▓реНрдЯ (int)] рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП)ред
var roles = context.Roles.Where(p => p.Name == "").FirstOrDefault()
- рд╣рдо рдкрд╣рд▓реЗ "(рдпрд╛ рдирд╣реАрдВ рдорд┐рд▓рддрд╛ рд╣реИ)" рдкреНрд░рдмрдВрдзрдХ "рдирд╛рдордХ рднреВрдорд┐рдХрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВред
- .Take () - рдПрди рдкрд╣рд▓реЗ рд░рд┐рдХреЙрд░реНрдб рдХрд╛ рдЪрдпрди рдХрд░рддрд╛ рд╣реИ
var roles = context.Roles.Where(p => p.Name == "").Take(4)
- рдкрд╣рд▓реЗ 4 рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐рдпреЛрдВ рдХрд╛ рдЪрдпрди рдХрд░рддрд╛ рд╣реИ
- .Skip () - рдПрди рдкрд╣рд▓реЗ рд░рд┐рдХреЙрд░реНрдб рдХреЗ рдЪрдпрди рдХреЛ рдЫреЛрдбрд╝ рджреЗрддрд╛ рд╣реИ
var roles = context.Roles.Where(p => p.Name == ""). Skip(2).Take(3)
- рдкрд╣рд▓реЗ 2 рдХреЛ рдЫреЛрдбрд╝ рджреЗрддрд╛ рд╣реИ рдФрд░ 3 рдЕрдЧрд▓реА рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐рдпреЛрдВ рдХрд╛ рдЪрдпрди рдХрд░рддрд╛ рд╣реИ
- .OrderBy () - рдЖрд░реЛрд╣реА рд╕реЙрд░реНрдЯ рдХрд░рддрд╛ рд╣реИ ред рдФрд░ OrderByDescending (), ThenBy (), ThenByDescending () рднреАред рдПрдХ рд▓рдВрдмреЛрджрд░ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХреЛ рдПрдХ рдЕрдВрддрд░ рдкреНрд░рдХрд╛рд░ рд╡рд╛рдкрд╕ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рдЬрд┐рд╕рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдЫрдВрдЯрд╛рдИ рд╣реЛрдЧреАред
var roles = context.Roles.Where(p => p.Name == "").OrderBy(p => p.ID)
- рдХреНрд░рдо рдореЗрдВ рдХреНрд░рдордмрджреНрдз
- .Count () - рд░рд┐рдХреЙрд░реНрдб рдХреА рд╕рдВрдЦреНрдпрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИ
var rolesCount = context.Roles.Where(p => p.Name == "").Count()
- рд░рд┐рдХреЙрд░реНрдб рдХреА рд╕рдВрдЦреНрдпрд╛
- .Any () - рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдХреЗ рд▓рд┐рдП рдПрдХ рдпрд╛ рдЕрдзрд┐рдХ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐рдпрд╛рдБ рдореМрдЬреВрдж рд╣реИрдВ
var рд░реЛрд▓реНрд╕рд╕реНрдЯрд┐рд╕реНрдЯ = рд╕рдВрджрд░реНрднред рднреВрдорд┐рдХрд╛ред рдХрд╣реАрдВ (p => p.Name == "рдкреНрд░рдмрдВрдзрдХ")ред рдХреЛрдИ рднреА () - рдРрд╕рд╛ рд░рд┐рдХреЙрд░реНрдб рд╣реИ
- ред рдЪреБрдиреЗрдВ () - рдордирдорд╛рдиреЗ рдкреНрд░рдХрд╛рд░ рдХрд╛ рдПрдХ IQueryable рд▓реМрдЯрд╛рддрд╛ рд╣реИ, рд╢рд╛рдпрдж рдЧрддрд┐рд╢реАрд▓ рднреА:
var otherRole = context.Roles.Where(p => p.Name == "").Select(p => new { ID = p.ID, Kod = p.Code})
- рд╣рдореЗрдВ рдПрдХ рдЧрддрд┐рд╢реАрд▓ рдкреНрд░рдХрд╛рд░ рдорд┐рд▓рддрд╛ рд╣реИ рдЬреЛ рднреВрдорд┐рдХрд╛ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдмрдирддрд╛ рд╣реИред
- .SelectMany () - рдЪрдпрди рдХреЗ рднреАрддрд░ рд╕рднреА IQueryable рдкреНрд░рдХрд╛рд░реЛрдВ рдХрд╛ рд╕рдВрдШ рд▓реМрдЯрд╛рддрд╛ рд╣реИ:
var otherRole = context.Roles.Where(p => p.Name == "").SelectMany(p => p.UserRoles)
- рд╣рдореЗрдВ "рдкреНрд░рдмрдВрдзрдХ" рдирд╛рдордХ рднреВрдорд┐рдХрд╛ рд╕реЗ рд╕рднреА рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдкреНрд░рд╛рдкреНрдд рд╣реЛрддреЗ рд╣реИрдВ
- .Distinct () - рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рдХреЛ рд╣рдЯрд╛рддрд╛ рд╣реИ
var managers = context.Roles.Where(p => p.Name == "").SelectMany(p => p.UserRoles).Select(p => p.User).Distinct()
- "рдкреНрд░рдмрдВрдзрдХ" рдирд╛рдордХ рднреВрдорд┐рдХрд╛ рд╡рд╛рд▓реЗ рд╕рднреА рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛
рдиреЛрдЯ: First(), FirstOrDefault(), Single(), SingleOrDefault(), Any(), Count()
- Where()
рдПрдВрдЯреНрд░реА рдХреЛ рдХрдо рдХрд░рддрд╛ рд╣реИ, рдЙрд╕рдХреЗ рдЕрдиреБрд░реВрдк рдкреИрд░рд╛рдореАрдЯрд░ рд▓рд╛рдЧреВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ: var roles = context.Roles.FirstOrDefault(p => p.Name == "")
рдЖрдк linq рдХреЗ рдФрд░ рдЕрдзрд┐рдХ рдЙрджрд╛рд╣рд░рдг рдФрд░ рдЙрдкрдпреЛрдЧ рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВ:
http://code.msdn.microsoft.com/101-LINQ-Samples-3fb9811b
рдПрдХ IRepository рд░рд┐рдкреЛрдЬрд┐рдЯрд░реА рдмрдирд╛рдирд╛, SqlRepositoryред
рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рд╣рдо рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдХреЗрд╡рд▓ рдЕрдм рд╣рдореЗрдВ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╕реЗ рдбреЗрдЯрд╛ рдореЙрдбрд▓ рдХреЛ рдЕрд▓рдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЕрд░реНрдерд╛рддред рд╕рдВрджрд░реНрдн рдФрд░ System.Data.Linq рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣рдорд╛рд░реЗ рдирд┐рдпрдВрддреНрд░рдХреЛрдВ рдХреЛ рдХреБрдЫ рднреА рдЬрд╛рдирдиреЗ рдХреА рдЬрд░реВрд░рдд рдирд╣реАрдВ рд╣реИред
рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо IRepository рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдмрдирд╛рдПрдВрдЧреЗ, рдЬрд╣рд╛рдБ рдбреЗрдЯрд╛ рддрдХ рдкрд╣реБрдБрдЪ рджреА рдЬрд╛рдПрдЧреА, рдФрд░ рдЗрд╕ рдбреЗрдЯрд╛ рдХреЛ рдмрдирд╛рдиреЗ, рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рдиреЗ рдФрд░ рд╣рдЯрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рддрд░реАрдХреЗ рдирд┐рдХрд╛рд▓реЗ рдЬрд╛рдПрдВрдЧреЗред
public interface IRepository { IQueryable<Role> Roles { get; } bool CreateRole(Role instance); bool UpdateRole(Role instance); bool RemoveRole(int idRole); тАж }
рд╣рдо рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди SqlRepository рдХрд╣рддреЗ рд╣реИрдВред рдЪреВрдБрдХрд┐ рд╣рдо рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ SqlRepository рдХреЛ рдЗрд╕ рд╕рдВрджрд░реНрдн рд╕реЗ рдЬреЛрдбрд╝рдирд╛ рдирд╣реАрдВ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рд╣рдо Ninject рдореЙрдбреНрдпреВрд▓ рдХреЛ LessonProject.Model рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рдЬреЛрдбрд╝ рджреЗрдВрдЧреЗ:
Install-Package Ninject
SqlRepository рд╡рд░реНрдЧ рдмрдирд╛рдПрдБ:
public class SqlRepository : IRepository { [Inject] public LessonProjectDbDataContext Db { get; set; } public IQueryable<Role> Roles { get { throw new NotImplementedException(); } } public bool CreateRole(Role instance) { throw new NotImplementedException(); } public bool UpdateRole(Role instance) { throw new NotImplementedException(); } public bool RemoveRole(int idRole) { throw new NotImplementedException(); } }
рд╕рднреА рддрд╛рд▓рд┐рдХрд╛рдУрдВ рддрдХ рдкрд╣реБрдВрдЪ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ, рдмрдирд╛рдиреЗ, рд╣рдЯрд╛рдиреЗ рдФрд░ рдмрджрд▓рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рд╣рдо рд╕реЛрдЪреЗрдВрдЧреЗ рдХрд┐ рдпрд╣ рдлрд╝рд╛рдЗрд▓ рдмрд╣реБрдд рдмрдбрд╝реА рдФрд░ рдЕрдЬреАрдм рджрд┐рдЦреЗрдЧреАред рдЗрд╕ рддрд░рд╣ рдХреЗ рдХреЛрдб рдХрд╛ рдкреНрд░рдмрдВрдзрди рдХрд░рдирд╛ рд╢рд╛рд░реАрд░рд┐рдХ рд░реВрдк рд╕реЗ рдХрдард┐рди рд╣реЛрдЧрд╛ред рдЗрд╕рд▓рд┐рдП рд╣рдо рдПрдХ рдЕрд▓рдЧ рдлрд╝реЛрд▓реНрдбрд░ рдмрдирд╛рдПрдВрдЧреЗ SqlRepository рдФрд░ SqlRepository рд╡рд░реНрдЧ рдЬрд┐рд╕реЗ рд╣рдо рдЖрдВрд╢рд┐рдХ рд░реВрдк рд╕реЗ рдмрдирд╛рдПрдВрдЧреЗ, рдФрд░ рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рд╣рдо рдкреНрд░рддреНрдпреЗрдХ рддрд╛рд▓рд┐рдХрд╛ рдХреЗ рд▓рд┐рдП рдЯреВрдЯреЗ рд╣реБрдП IRepository рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдмрдирд╛рдПрдВрдЧреЗред рднреВрдорд┐рдХрд╛ рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдирд╛рдо рджреЗрдВ:
public partial class SqlRepository { public IQueryable<Role> Roles { get { return Db.Roles; } } public bool CreateRole(Role instance) { if (instance.ID == 0) { Db.Roles.InsertOnSubmit(instance); Db.Roles.Context.SubmitChanges(); return true; } return false; } public bool RemoveRole(int idRole) { Role instance = Db.Roles.FirstOrDefault(p => p.ID == idRole); if (instance != null) { Db.Roles.DeleteOnSubmit(instance); Db.Roles.Context.SubmitChanges(); return true; } return false; } }
рдПрдХ рдЫреЛрдЯреА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ 10 рд╕реЗ 40 рдЯреЗрдмрд▓, 40 рд╕реЗ рдПрдХ рдмрдбрд╝реА рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╢рд╛рдорд┐рд▓ рд╣реИ, рдФрд░ рдореИрдВ рдХрд┐рд╕реА рднреА рддрд░рд╣ рдпрд╣ рд╕рдм рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛ред рдЖрдЗрдП рдХреБрдЫ рд╕реНрдирд┐рдкреЗрдЯ рдмрдирд╛рдПрдВ, IRepository рдХреЗ рд▓рд┐рдП рдФрд░ SqlRepository рдХреЗ рд▓рд┐рдПред рд╕реНрдирд┐рдкреЗрдЯреНрд╕ рдкреВрд░реНрд╡рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХреЛрдб рдЯреЗрдореНрдкреНрд▓реЗрдЯ рд╣реЛрддреЗ рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рдЗрдВрдЯреЗрд▓реАрд╕реЗрдиреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдмреБрд▓рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдЖрдкрдХреЛ рдЬрд▓реНрджреА рд╕реЗ рдХреЛрдб рдмрдирд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рдорд┐рд▓рддреА рд╣реИред
рдХреЗ рдЯреБрдХрдбрд╝реЗ
IRepository рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдХреЗ рд▓рд┐рдП, table.snippet рдмрдирд╛рдПрдВ:
<CodeSnippets xmlns="http://schemas.microsoft.com/VisualStudio/2005/CodeSnippet"> <CodeSnippet Format="1.0.0" > <Header> <Title> Table </Title> <Shortcut>Table</Shortcut> </Header> <Snippet> <Declarations> <Literal> <ID>Table</ID> <ToolTip>Table name for create.</ToolTip> <Default>Table</Default> </Literal> </Declarations> <Code Language="CSharp"> <![CDATA[ #region $Table$ IQueryable<$Table$> $Table$s { get; } bool Create$Table$($Table$ instance); bool Update$Table$($Table$ instance); bool Remove$Table$(int id$Table$); #endregion ]]> </Code> </Snippet> </CodeSnippet> </CodeSnippets>
SqlRepository рдХреЗ рд▓рд┐рдП, sqlTable.snippet рд╕реНрдирд┐рдкреЗрдЯ рдмрдирд╛рдПрдВ:
<CodeSnippets xmlns="http://schemas.microsoft.com/VisualStudio/2005/CodeSnippet"> <CodeSnippet Format="1.0.0" > <Header> <Title> Sql repository </Title> <Shortcut>sqltable</Shortcut> </Header> <Snippet> <Declarations> <Literal> <ID>Table</ID> <ToolTip>Table name for create.</ToolTip> <Default>Table</Default> </Literal> </Declarations> <Code Language="CSharp"> <![CDATA[ public IQueryable<$Table$> $Table$s { get { return Db.$Table$s; } } public bool Create$Table$($Table$ instance) { if (instance.ID == 0) { Db.$Table$s.InsertOnSubmit(instance); Db.$Table$s.Context.SubmitChanges(); return true; } return false; } public bool Update$Table$($Table$ instance) { $Table$ cache = Db.$Table$s.Where(p => p.ID == instance.ID).FirstOrDefault(); if (cache != null) { //TODO : Update fields for $Table$ Db.$Table$s.Context.SubmitChanges(); return true; } return false; } public bool Remove$Table$(int id$Table$) { $Table$ instance = Db.$Table$s.Where(p => p.ID == id$Table$).FirstOrDefault(); if (instance != null) { Db.$Table$s.DeleteOnSubmit(instance); Db.$Table$s.Context.SubmitChanges(); return true; } return false; } ]]> </Code> </Snippet> </CodeSnippet> </CodeSnippets>
рдХреЛрдб-рд╕реНрдирд┐рдкреЗрдЯ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдПред рдЦреБрд▓реЗ рдЙрдкрдХрд░рдг -> рдХреЛрдб рд╕реНрдирд┐рдкреЗрдЯ рдкреНрд░рдмрдВрдзрдХ ... (Ctrl-K, B)ред рд╡рд┐рдВрдбреЛ рдореЗрдВ, рдореЗрд░реЗ рдХреЛрдб рд╕реНрдирд┐рдкреЗрдЯ рдореЗрдВ рджреЛрдиреЛрдВ рд╕реНрдирд┐рдкреЗрдЯ рдЖрдпрд╛рдд рдХрд░реЗрдВ рдФрд░ рдЖрдпрд╛рдд рдХрд░реЗрдВ рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ:

рдЦрддреНрдо рдХрд░реЛ, рдареАрдХ рд╣реИред
рд╣рдо рдЯреЗрдмрд▓ рдпреВрдЬрд░ рдФрд░ рдпреВрдЬрд░рд░реЛрд▓ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред


рдпрд╣
Update
[рддрд╛рд▓рд┐рдХрд╛ рдирд╛рдо] рдХреЗ рд▓рд┐рдП рдХреЗрд╡рд▓ рдлрд╝реАрд▓реНрдб рдХреЛ рдкрдВрдЬреАрдХреГрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрдиреА рд╣реБрдИ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдХрдо рдХрд╛рдо рд╣реИред
рдкреНрд░рддрд┐рдирд┐рдзрд┐
рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рд╣рдорд╛рд░реЗ рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧ рдХреА рдЬрд╛рдиреЗ рд╡рд╛рд▓реА рдХрдХреНрд╖рд╛рдПрдВ рдЖрдВрд╢рд┐рдХ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдЙрдиреНрд╣реЗрдВ рдкреВрд░рдХ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЪрд▓рд┐рдП, SqlRepository рдХреА рддрд░рд╣, Proxy рдлрд╝реЛрд▓реНрдбрд░ рдмрдирд╛рддреЗ рд╣реИрдВ, рдЬрд╣рд╛рдБ рд╣рдо рдЖрдВрд╢рд┐рдХ рдХрдХреНрд╖рд╛рдПрдВ рд▓рдЧрд╛рдПрдВрдЧреЗред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╡рд░реНрдЧ рдХреЗ рд▓рд┐рдП, рдПрдХ рд╡рд┐рдзрд┐ рдмрдирд╛рдПрдБ рдЬреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рд╕рдХреНрд░рд┐рдп рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдЙрддреНрдкрдиреНрди рдХрд░реЗ:
public partial class User { public static string GetActivateUrl() { return Guid.NewGuid().ToString("N"); } }
рд╣рдо рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ:
public bool CreateUser(User instance) { if (instance.ID == 0) { instance.AddedDate = DateTime.Now; instance.ActivatedLink = User.GetActivateUrl(); Db.Users.InsertOnSubmit(instance); Db.Users.Context.SubmitChanges(); return true; } return false; }
Asp.net mvc рдореЗрдВ DB рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛
рдбреЗрдЯрд╛рдмреЗрд╕ рдПрдХреНрд╕реЗрд╕ рд▓рд╛рдЗрди рдХреЛ web.Config рдореЗрдВ рдЬреЛрдбрд╝реЗрдВ:
<connectionStrings> <add name="ConnectionString" connectionString="Data Source=SATURN-PC;Initial Catalog=LessonProject;Integrated Security=True;Pooling=False" providerName="System.Data.SqlClient" /> </connectionStrings>
рд╣рдо рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд╕рд╛рде Ninject рдореЗрдВ рдХрд╛рдо рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ:
private static void RegisterServices(IKernel kernel) { kernel.Bind<LessonProjectDbDataContext>().ToMethod(c => new LessonProjectDbDataContext(ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString)); kernel.Bind<IRepository>().To<SqlRepository>().InRequestScope(); }
InRequestScope () рд▓рд╛рдЧреВ рдХрд░реЗрдВред рдпрд╛рдиреА рдкреНрд░рддреНрдпреЗрдХ рдЕрдиреБрд░реЛрдз рдПрдХ рдЕрд▓рдЧ SqlRepository рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдЧрд╛ред рдпрд╣ рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рджреМрд░рд╛рди рдЯрдХрд░рд╛рд╡ рд╕реЗ рдмрдЪ рдЬрд╛рдПрдЧрд╛ред рд╣рдо рдирд┐рдпрдВрддреНрд░рдХ рдореЗрдВ рдПрдХ IRepository рдХреА рдШреЛрд╖рдгрд╛ рдХрд░рддреЗ рд╣реИрдВ:
public class HomeController : Controller { [Inject] public IRepository Repository { get; set; } public ActionResult Index() { var roles = Repository.Roles.ToList(); return View(roles); } }
рдФрд░ рджреЗрдЦреЗрдВ (/ View/Home/Index.cshtml) рдЕрдкрдбреЗрдЯ рдХрд░реЗрдВ:
@model IList<LessonProject.Model.Role> @{ ViewBag.Title = "LessonProject"; Layout = "~/Views/Shared/_Layout.cshtml"; } <h2>LessonProject</h2> <p> @foreach (var role in Model) { <div class="item"> <span class="id"> @role.ID </span> <span class="name"> @role.Name </span> <span class="Code"> @role.Code </span> </div> } </p>
рд╣рдореЗрдВ рдПрдХ рдЕрдЪреНрдЫрд╛ рдкрд░рд┐рдгрд╛рдо рдорд┐рд▓рддрд╛ рд╣реИ:

рд╕рднреА рд╕реНрд░реЛрдд
https://bitbucket.org/chernikov/lessons рдкрд░ рд╕реНрдерд┐рдд рд╣реИрдВ