ASP NET.MVC рдкрд╛рда 3. рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛

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

рдПрдХ DB рдХреНрдпрд╛ рд╣реИ

рдПрдХ рд░рд┐рд▓реЗрд╢рдирд▓ рдбреЗрдЯрд╛рдмреЗрд╕ рдПрдХ рд░рд┐рд▓реЗрд╢рдирд▓ рдбреЗрдЯрд╛ рдореЙрдбрд▓ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рдбреЗрдЯрд╛рдмреЗрд╕ рд╣реИред рд░рд┐рд╢реНрддреЗрджрд╛рд░реА рдЕрдВрдЧреНрд░реЗрдЬреА рд╕реЗ рдПрдХ рд░рд┐рд╢реНрддрд╛ (рд░рд┐рд▓реЗрд╢рдирд╢рд┐рдк) рд╣реИред рд╕рдВрдмрдВрдзред

рдЯреЗрдмрд▓

рдпрд╣ рддрд╛рд▓рд┐рдХрд╛ рд╣реИ:


рдПрдХ рдЯреЗрдмрд▓ рдореЗрдВ рдХреЙрд▓рдо рдФрд░ рд░реЛ рд╣реЛрддреЗ рд╣реИрдВред рдХреЙрд▓рдо рдореЗрдВ рдЧреБрдг рд╣реЛрддреЗ рд╣реИрдВ - рдирд╛рдо, рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░ред
рдЯреЗрдмрд▓реНрд╕ рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЧреБрдг рд╣реЛрдиреЗ рдЪрд╛рд╣рд┐рдП:

рддрд╛рд▓рд┐рдХрд╛ рд╕рдВрд░рдЪрдирд╛ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд░реВрдк рдореЗрдВ рд▓рд┐рдЦреА рдЬрд╛ рд╕рдХрддреА рд╣реИ:


рд╕рдВрдЪрд╛рд░

рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдХреЗ рдмреАрдЪ рд╕рдВрдмрдВрдз (рд░рд┐рд▓реЗрд╢рди) рд╣реИрдВред рдХрдиреЗрдХреНрд╢рди рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЗ рдкрд╛рд╕ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП:


рддреАрди рдкреНрд░рдХрд╛рд░ рдХреЗ рдХрдиреЗрдХреНрд╢рди рд╣реИрдВ:

рдЕрдм рдпрд╣ рдХреИрд╕реЗ рдХрд░рдирд╛ рд╣реИ рдЗрд╕рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рддреЗ рд╣реИрдВред

рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдПрдХ рд╕рд░рд▓ рд╕реНрдХреАрдорд╛ рдмрдирд╛рдирд╛

рдЖрдЗрдП рд╡реАрдПрд╕ 2012 рдореЗрдВ рдПрдХ рдбреЗрдЯрд╛рдмреЗрд╕ рдмрдирд╛рдПрдВ:



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





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

рдкреНрд░рд╛рдердорд┐рдХ рдХреБрдВрдЬреА рд╕реЗрдЯ рдХрд░реЗрдВ:



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



рдЗрд╕реА рддрд░рд╣, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рддрд╛рд▓рд┐рдХрд╛ рдмрдирд╛рдПрдБ:
рдореИрджрд╛рдирдлрд╝реАрд▓реНрдб рдкреНрд░рдХрд╛рд░
рдЖрдИрдбреАрдкреВрд░реНрдгрд╛рдВрдХ
рдИрдореЗрд▓рдирд╡рд░рдЪ (150)
рдкрд╛рд╕рд╡рд░реНрдбрдирд╡рд░рдЪ (50)
AddedDatedatetime
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.php

LinqToSQL рдФрд░ Linqред

рдЪрд▓рд┐рдП ClassLibrary рдкреНрд░рдХрд╛рд░ рдХреЗ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП LessonProject.Model рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдмрдирд╛рддреЗ рд╣реИрдВред
SQL рд╡рд░реНрдЧ рдкреНрд░рдХрд╛рд░ рдореЗрдВ рдПрдХ LINQ рдЬреЛрдбрд╝реЗрдВ, LessonProejctDb.dbml рдкрд░ рдХреЙрд▓ рдХрд░реЗрдВ



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



рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдЗрд╕ рддрд░рд╣ рдХреЗ рд╕рд░рд▓ рдХрд╛рд░реНрдпреЛрдВ рдХреА рдорджрдж рд╕реЗ рд╣рдо рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВ:


рднреВрдорд┐рдХрд╛ рдФрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рдХреБрдЫ рдбреЗрдЯрд╛ рдЬреЛрдбрд╝реЗрдВ:

1рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХрд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХ
2рдЧреНрд░рд╛рд╣рдХрдЧреНрд░рд╛рд╣рдХ


1chernikov@gmail.com1234561/1/2012 12:00:00 рдкреВрд░реНрд╡рд╛рд╣реНрдирд╢реВрдиреНрдп123456рд╢реВрдиреНрдпрд╢реВрдиреНрдп
2chernikov2@gmail.com1234561/1/2012 12:00:00 рдкреВрд░реНрд╡рд╛рд╣реНрдирд╢реВрдиреНрдп123456рд╢реВрдиреНрдпрд╢реВрдиреНрдп


рдФрд░ UserRole

рдЖрдИрдбреАUserIDрднреВрдорд┐рдХрд╛-рдЖрдИрдбреА
111
212
322


рдХрдВрд╕реЛрд▓ рдкреНрд░реЛрдЬреЗрдХреНрдЯ 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 рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рдкреНрд░рдХрд╛рд░реЛрдВ рдкрд░ рд▓рд╛рдЧреВ рд╣реЛрддрд╛ рд╣реИ <>


рдиреЛрдЯ: 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 рдкрд░ рд╕реНрдерд┐рдд рд╣реИрдВ

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


All Articles