Π£ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΡΠΏΠΈΡΠΊΠ°ΠΌΠΈ ΡΠ°Π·ΡΠ΅ΡΡΠ½Π½ΡΡ Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠΉ
Π ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π‘Π£ΠΠ Π΄Π»Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΠ Π² ΠΊΡΡΡΠΎΠ²ΠΎΠΌ ΠΏΡΠΎΠ΅ΠΊΡΠ΅ Π±ΡΠ»Π° Π²ΡΠ±ΡΠ°Π½Π° Π‘Π£ΠΠ Microsoft SQL Server. ΠΡΠ° Π‘Π£ΠΠ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ°Π½Π° ΠΊΠΎΡΠΏΠΎΡΠ°ΡΠΈΠ΅ΠΉ Microsoft ΠΈ ΠΏΠΎΠ΄Π΄ΡΠ΅ΠΆΠΈΠ²Π°Π΅Ρ ΡΠ΅Π»ΡΡΠΈΠΎΠ½Π½ΡΡ ΠΌΠΎΠ΄Π΅Π»Ρ ΠΠ. ΠΡΠ½ΠΎΠ²Π½ΠΎΠΉ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΠΉ ΡΠ·ΡΠΊ Π·Π°ΠΏΡΠΎΡΠΎΠ² — Transact-SQL, ΡΠΎΠ·Π΄Π°Π½Π½ΡΠΉ ΡΠΎΠ²ΠΌΠ΅ΡΡΠ½ΠΎ Microsoft ΠΈ Sybase. Transact-SQL ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠ΅ΠΉ ΡΡΠ°Π½Π΄Π°ΡΡΠ° ANSI/ISO ΡΡΡΡΠΊΡΡΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΡΠ·ΡΠΊΠ° Π·Π°ΠΏΡΠΎΡΠΎΠ² (SQL) Ρ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΡΠΌΠΈ. Π‘Π£ΠΠ SQL Server… Π§ΠΈΡΠ°ΡΡ Π΅ΡΡ >
Π£ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΡΠΏΠΈΡΠΊΠ°ΠΌΠΈ ΡΠ°Π·ΡΠ΅ΡΡΠ½Π½ΡΡ Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠΉ (ΡΠ΅ΡΠ΅ΡΠ°Ρ, ΠΊΡΡΡΠΎΠ²Π°Ρ, Π΄ΠΈΠΏΠ»ΠΎΠΌ, ΠΊΠΎΠ½ΡΡΠΎΠ»ΡΠ½Π°Ρ)
Π€Π΅Π΄Π΅ΡΠ°Π»ΡΠ½ΠΎΠ΅ Π³ΠΎΡΡΠ΄Π°ΡΡΡΠ²Π΅Π½Π½ΠΎΠ΅ Π±ΡΠ΄ΠΆΠ΅ΡΠ½ΠΎΠ΅ ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΠ΅ ΡΡΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΠ΅ Π²ΡΡΡΠ΅Π³ΠΎ ΠΏΡΠΎΡΠ΅ΡΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΠ³ΠΎ ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ ΠΠ°ΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΠΉ ΠΈΡΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΈΠΉ ΡΠ½ΠΈΠ²Π΅ΡΡΠΈΡΠ΅Ρ «ΠΠΠ»
ΠΡΡΠ΅Ρ ΠΊ ΠΊΡΡΡΠΎΠ²ΠΎΠΌΡ ΠΏΡΠΎΠ΅ΠΊΡΡ ΠΏΠΎ Π΄ΠΈΡΡΠΈΠΏΠ»ΠΈΠ½Π΅ «ΠΠ°Π·Ρ Π΄Π°Π½Π½ΡΡ »
Π’Π΅ΠΌΠ°: «Π£ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΡΠΏΠΈΡΠΊΠ°ΠΌΠΈ ΡΠ°Π·ΡΠ΅ΡΡΠ½Π½ΡΡ Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠΉ»
Π‘ΡΡΠ΄Π΅Π½Ρ Π³ΡΡΠΏΠΏΡ Π-16−09:
Π§Π°ΠΏΠ»ΡΠ³ΠΈΠ½ Π.Π.
ΠΡΠ΅ΠΏΠΎΠ΄Π°Π²Π°ΡΠ΅Π»Ρ:
Π΄ΠΎΡ., ΠΊ.Ρ.Π½. Π‘ΠΈΠ΄ΠΎΡΠΎΠ²Π° Π.Π.
ΠΠΎΡΠΊΠ²Π° 2013 Π³.
ΠΠ³Π»Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΠ°Π΄Π°Π½ΠΈΠ΅ Π½Π° ΠΊΡΡΡΠΎΠ²ΠΎΠΉ ΠΏΡΠΎΠ΅ΠΊΡ ΠΡΡ ΠΎΠ΄Π½ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅ Π΄Π»Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΊΡΡΡΠΎΠ²ΠΎΠ³ΠΎ ΠΏΡΠΎΠ΅ΠΊΡΠ° Π‘ΠΎΠΊΡΠ°ΡΠ΅Π½ΠΈΡ ΠΠ²Π΅Π΄Π΅Π½ΠΈΠ΅
1. ΠΠ½Π°Π»ΠΈΠ· ΠΏΡΠ΅Π΄ΠΌΠ΅ΡΠ½ΠΎΠΉ ΠΎΠ±Π»Π°ΡΡΠΈ
2. ΠΡΠΎΠ΅ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ
2.1. Π Π°Π·ΡΠ°Π±ΠΎΡΠΊΠ° ER-ΠΌΠΎΠ΄Π΅Π»ΠΈ
2.2. ΠΡΠΎΠ΅ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΡΠ°Π²ΠΈΠ» ΡΠ΅Π»ΠΎΡΡΠ½ΠΎΡΡΠΈ ΠΠ
2.3. ΠΠ½Π°Π»ΠΈΠ· ΡΠ΅Π»ΡΡΠΈΠΎΠ½Π½ΠΎΠΉ ΠΌΠΎΠ΄Π΅Π»ΠΈ
3. Π Π΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ
4. ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½Π°Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ
4.1 ADO .NET ΠΈ Entity Framework
4.2 ΠΡΠΈΠΌΠ΅ΡΡ ΡΠΊΡΠ°Π½Π½ΡΡ ΡΠΎΡΠΌ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° ΠΠΈΡΠ΅ΡΠ°ΡΡΡΠ° ΠΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ 1. ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΡΠΉ ΠΊΠΎΠ΄, ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠΈΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΡ Ρ ΠΠ.
ΠΠ°Π΄Π°Π½ΠΈΠ΅ Π½Π° ΠΊΡΡΡΠΎΠ²ΠΎΠΉ ΠΏΡΠΎΠ΅ΠΊΡ
Π¦Π΅Π»Ρ ΡΠ°Π±ΠΎΡΡ: ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ° ΠΈ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΠΠ, Π° ΡΠ°ΠΊΠΆΠ΅ ΠΏΡΠΎΠ΅ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² ΠΠ Π΄Π»Ρ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·Π°ΡΠΈΠΈ ΠΎΡΠ³Π°Π½ΠΈΠ·Π°ΡΠΈΠΈ ΡΠ°Π±ΠΎΡΡ Ρ Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡΠΌΠΈ ΠΏΠΎΠ΄Π³ΠΎΡΠΎΠ²ΠΊΠΈ Π² ΡΡΠ΅Π±Π½ΡΡ Π·Π°Π²Π΅Π΄Π΅Π½ΠΈΡΡ Π²ΡΡΡΠ΅Π³ΠΎ ΠΈ ΡΡΠ΅Π΄Π½Π΅Π³ΠΎ-ΠΏΡΠΎΡΠ΅ΡΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΠ³ΠΎ ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ.
ΠΠ Π΄ΠΎΠ»ΠΆΠ½Π° Π²ΡΠΏΠΎΠ»Π½ΡΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ Π·Π°Π΄Π°ΡΠΈ:
Β· Π€ΠΎΡΠΌΠΈΡΠΎΠ²Π°ΡΡ ΡΠΏΠΈΡΠΎΠΊ Π·Π°ΡΠ²ΠΎΠΊ ΠΎΡ ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ, ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠΈΡ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΡΡ Π΄Π»Ρ ΡΠΈΡΡΠ΅ΠΌΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΊΠ°ΡΠ°ΡΡΡΡΡΡ ΡΠ°ΠΌΠΎΠ³ΠΎ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ (ΡΡΠ΅Π±Π½ΠΎΠ³ΠΎ Π·Π°Π²Π΅Π΄Π΅Π½ΠΈΡ), Π½Π°Π±ΠΎΡΠ° Π΅Π³ΠΎ Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠΉ.
Β· ΠΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡ ΡΠ°Π±ΠΎΡΠΈΠΉ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ Ρ ΡΠΆΠ΅ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½ΡΠΌΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ°ΠΌΠΈ ΠΠ (ΡΠ²ΡΠ·ΠΈ ΠΏΠΎ Π²Π½Π΅ΡΠ½Π΅ΠΌΡ ΠΊΠ»ΡΡΡ).
Β· ΠΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡ ΡΠ΅Π»ΠΎΡΡΠ½ΠΎΡΡΡ ΡΠ°Π±ΠΎΡΡ ΡΠΈΡΡΠ΅ΠΌΡ.
Β· ΠΠΌΠ΅ΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΡΠΎΡ ΡΠ°Π½ΡΡΡ ΠΎΡΠΊΠ»ΠΈΠΊΠΈ (ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ) ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ ΠΈ Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΎΡΠΎΠ² ΡΠΈΡΡΠ΅ΠΌΡ ΠΎ ΠΏΡΠΈΡΠΈΠ½Π°Ρ ΠΈ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ°Ρ ΠΎΡΠΎΡΠΌΠ»Π΅Π½ΠΈΡ Π·Π°ΡΠ²ΠΎΠΊ.
ΠΡΡ ΠΎΠ΄Π½ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅ Π΄Π»Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΊΡΡΡΠΎΠ²ΠΎΠ³ΠΎ ΠΏΡΠΎΠ΅ΠΊΡΠ°
Π‘ΡΠ΅Π΄Π° ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ: Microsoft Visual Studio 2010;
Π‘Π£ΠΠ: Microsoft SQL;
Π‘Π΅ΡΠ²Π΅Ρ ASP.NET MVC, .Net 4.0 IIS;
ΠΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ ΡΠ°Π±ΠΎΡΡ Ρ ΠΠ: Entity Framework, LinQ;
Π‘ΡΠ΅Π΄Π° ΠΏΡΠΎΠ΅ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΠ: Allfusion ERWin.
Π‘ΠΎΠΊΡΠ°ΡΠ΅Π½ΠΈΡ
ΠΠ — Π±Π°Π·Π° Π΄Π°Π½Π½ΡΡ
3ΠΠ€ — ΡΡΠ΅ΡΡΡ Π½ΠΎΡΠΌΠ°Π»ΡΠ½Π°Ρ ΡΠΎΡΠΌΠ° Π‘Π£ΠΠ — ΡΠΈΡΡΠ΅ΠΌΠ° ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ Π±Π°Π·Π°ΠΌΠΈ Π΄Π°Π½Π½ΡΡ Π€Π — ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½Π°Ρ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΡ Π€ΠΠ‘ ΠΠΠ ΠΈ ΠΏΡΠΈΡΠΌΠ°, ΡΠΈΡΡΠ΅ΠΌΠ° — Π€Π΅Π΄Π΅ΡΠ°Π»ΡΠ½Π°Ρ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΎΠ½Π½Π°Ρ ΡΠ»ΡΠΆΠ±Π° Π ΠΎΡΠΎΠ±ΡΠ½Π°Π΄Π·ΠΎΡΠ° ΠΎ ΠΏΡΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠΈ ΠΠ΄ΠΈΠ½ΠΎΠ³ΠΎ ΠΠΎΡΡΠ΄Π°ΡΡΡΠ²Π΅Π½Π½ΠΎΠ³ΠΎ ΠΠΊΠ·Π°ΠΌΠ΅Π½Π° ΠΈ ΠΏΠΎΡΡΠ΄ΠΊΠ° ΠΏΡΠΈΡΠΌΠ°.
Π£Π — ΡΡΠ΅Π±Π½ΠΎΠ΅ Π·Π°Π²Π΅Π΄Π΅Π½ΠΈΠ΅ (ΡΠΎΠΎΡΠ². ΠΠ£Π ΠΈ Π‘Π‘Π£Π — ΠΡΡΡΠ΅Π΅ Π£Π ΠΈ Π‘ΡΠ΅Π΄Π½Π΅Π΅ ΡΠΏΠ΅ΠΈΠ°Π»ΡΠ½ΠΎΠ΅ Π£Π), ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΡΠΈΡΡΠ΅ΠΌΡ Π€ΠΠ‘.
Π¦Π΅Π»ΡΡ ΠΊΡΡΡΠΎΠ²ΠΎΠ³ΠΎ ΠΏΡΠΎΠ΅ΠΊΡΠ° ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ° ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ (ΠΠ) ΠΈ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ½ΡΡ ΡΡΠ΅Π΄ΡΡΠ² Π΄Π»Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΡΠΊΠ°Π·Π°Π½Π½ΡΡ Π² Π·Π°Π΄Π°Π½ΠΈΠΈ ΡΡΠ½ΠΊΡΠΈΠΉ. ΠΠ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°Π΅Ρ Ρ ΡΠ°Π½Π΅Π½ΠΈΠ΅ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ ΠΈ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠΎΠ±ΠΎΠΉ ΠΏΠΎΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½ΡΡ ΡΠΎΠ²ΠΎΠΊΡΠΏΠ½ΠΎΡΡΡ Π΄Π°Π½Π½ΡΡ , ΠΎΡΠ³Π°Π½ΠΈΠ·ΠΎΠ²Π°Π½Π½ΡΡ ΠΏΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠΌ ΠΏΡΠ°Π²ΠΈΠ»Π°ΠΌ, Π²ΠΊΠ»ΡΡΠ°ΡΡΠΈΠΌ ΠΎΠ±ΡΠΈΠ΅ ΠΏΡΠΈΠ½ΡΠΈΠΏΡ ΠΎΠΏΠΈΡΠ°Π½ΠΈΡ, Ρ ΡΠ°Π½Π΅Π½ΠΈΡ ΠΈ ΠΌΠ°Π½ΠΈΠΏΡΠ»ΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π΄Π°Π½Π½ΡΠΌΠΈ. ΠΠ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΎΠ½Π½ΠΎΠΉ ΠΌΠΎΠ΄Π΅Π»ΡΡ ΠΏΡΠ΅Π΄ΠΌΠ΅ΡΠ½ΠΎΠΉ ΠΎΠ±Π»Π°ΡΡΠΈ, Π² ΠΊΠΎΡΠΎΡΠΎΠΉ ΡΠ΅ΡΠ°ΡΡΡΡ ΠΏΠΎΡΡΠ°Π²Π»Π΅Π½Π½ΡΠ΅ Π·Π°Π΄Π°ΡΠΈ.
ΠΡΠ°ΠΏΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΊΡΡΡΠΎΠ²ΠΎΠ³ΠΎ ΠΏΡΠΎΠ΅ΠΊΡΠ°:
Β· ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π°Π½Π°Π»ΠΈΠ·Π° ΠΏΡΠ΅Π΄ΠΌΠ΅ΡΠ½ΠΎΠΉ ΠΎΠ±Π»Π°ΡΡΠΈ;
Β· ΠΏΡΠΎΠ΅ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΠ;
Β· ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΠ ΡΡΠ΅Π΄ΡΡΠ²Π°ΠΌΠΈ Π²ΡΠ±ΡΠ°Π½Π½ΠΎΠΉ Π‘Π£ΠΠ;
Β· ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½Π°Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° Ρ ΠΠ.
ΠΠ»Ρ Π°Π½Π°Π»ΠΈΠ·Π° ΠΏΡΠ΅Π΄ΠΌΠ΅ΡΠ½ΠΎΠΉ ΠΎΠ±Π»Π°ΡΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ CASE-ΡΡΠ΅Π΄ΡΡΠ²ΠΎ AllFusion Process Modeler, ΠΊΠΎΡΠΎΡΡΠΉ Π²Ρ ΠΎΠ΄ΠΈΡ Π² ΡΠΎΡΡΠ°Π² ΠΏΠ°ΠΊΠ΅ΡΠ° AllFusion Modeler Suite. ΠΡΠΎΠ΅ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ ΠΠ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ CASE-ΡΡΠ΅Π΄ΡΡΠ²Π° AllFusion ERwin Data Modeler, Π²Ρ ΠΎΠ΄ΡΡΠΈΠΉ Π² ΡΠΎΡΡΠ°Π² ΡΡΠΎΠ³ΠΎ ΠΆΠ΅ ΠΏΠ°ΠΊΠ΅ΡΠ°.
Π Π΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΠ ΠΏΡΠΎΠ²ΠΎΠ΄ΠΈΡΡΡ Π² ΡΡΠ΅Π΄Π΅ Microsoft SQL Server. Π ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΡΠ·ΡΠΊΠ° ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ Π±ΡΠ» Π²ΡΠ±ΡΠ°Π½ C# Π² ΡΡΠ΅Π΄Π΅ Microsoft Visual Studio.
1. ΠΠ½Π°Π»ΠΈΠ· ΠΏΡΠ΅Π΄ΠΌΠ΅ΡΠ½ΠΎΠΉ ΠΎΠ±Π»Π°ΡΡΠΈ
1.1 ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΠΏΡΠ΅Π΄ΠΌΠ΅ΡΠ½ΠΎΠΉ ΠΎΠ±Π»Π°ΡΡΠΈ Π£ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΡΠΏΠΈΡΠΊΠ°ΠΌΠΈ ΡΠ°Π·ΡΠ΅ΡΡΠ½Π½ΡΡ Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡΠΌΠΈ: Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Π£Π·Π° ΠΏΡΠ΅Π΄ΡΡΠΌΠΎΡΡΠ΅Π½ ΡΠΏΠΈΡΠΎΠΊ Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠΉ, ΠΏΠΎ ΠΊΠΎΡΠΎΡΠΎΠΌΡ ΠΎΠ½ ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΎΠ²ΠΎΠ΄ΠΈΡΡ Π½Π°Π±ΠΎΡ ΡΡΡΠ΄Π΅Π½ΡΠΎΠ² Π΄Π»Ρ ΠΈΡ ΠΎΠ±ΡΡΠ΅Π½ΠΈΡ. Π ΡΠΈΡΡΠ΅ΠΌΠ΅ ΡΡΠΈ Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ Π½Π΅ ΠΌΠΎΠ³ΡΡ ΡΠ΅Π΄Π°ΠΊΡΠΈΡΠΎΠ²Π°ΡΡΡΡ Π½Π΅ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²Π΅Π½Π½ΠΎ Π£ΠΠΎΠΌ, Π½ΠΎ ΠΌΠΎΠ³ΡΡ ΡΠ΅Π΄Π°ΠΊΡΠΈΡΠΎΠ²Π°ΡΡΡΡ Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΎΡΠ°ΠΌΠΈ ΡΠΈΡΡΠ΅ΠΌΡ Π€ΠΠ‘.
Π Π΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΎΠ±ΡΠ΅Π½ΠΈΡ ΠΌΠ΅ΠΆΠ΄Ρ Π£Π·Π°ΠΌΠΈ ΠΈ Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΎΡΠ°ΠΌΠΈ ΠΏΠΎΡΡΡΠΎΠ΅Π½Π° Π½Π° Π·Π°ΡΠ²ΠΊΠ°Ρ , ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠΈΡ Π²ΡΡ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΈ Ρ ΡΠ°Π½ΡΡΠΈΡ ΡΡ Π² ΠΠ. ΠΠ°ΡΠ²ΠΊΠΈ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ Π½Π° Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΠΎΡΡΠ΅ΠΉ Π² ΡΠΏΠΈΡΠΎΠΊ, ΡΠ°ΠΊΠΈ Π½Π° ΡΠ΄Π°Π»Π΅Π½ΠΈΠ΅ ΠΈΡ .
ΠΡΠ΅Π΄ΡΡΠΌΠΎΡΡΠ΅Π½Ρ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ ΠΎ ΠΏΡΠΈΡΠΈΠ½Π΅ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΡ/ΡΠ΄Π°Π»Π΅Π½ΠΈΡ (ΠΊΠ°ΠΊ ΠΏΡΠΈΠΌΠ΅Ρ: ΠΏΡΠΈΠΊΠ°Π·), ΡΠ°ΠΊ ΠΈ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΎΡΠΎΠ² Π² ΡΠ»ΡΡΠ°Π΅ ΠΎΡΠΊΠ°Π·Π° Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π·Π°ΡΠ²ΠΊΠΈ. ΠΠΎΡΡΡΠΏ ΠΊ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΡΠΌ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΠΎΡ ΡΠ°Π½ΡΡΡΡΡ Π² Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ° ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ Π·Π°ΡΠ²ΠΊΠΈ.
ΠΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠ΅Π² ΠΊ ΠΎΠ΄Π½ΠΎΠΌΡ Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΎΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π½Π΅ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½Π½ΠΎ.
Π£ ΠΎΠ΄Π½ΠΎΠ³ΠΎ Π£ΠΠ° ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΡΠΊΠ°Π·Π°Π½ΠΎ Π² Π·Π°ΡΠ²ΠΊΠ΅ ΡΠ΅ΠΎΡΠ΅ΡΠΈΡΠ΅ΡΠΊΠΈ Π½Π΅ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½Π½ΠΎΠ΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠΉ, ΠΏΡΠΈΡΡΠΌ Π½Π° ΡΠ΄Π°Π»Π΅Π½ΠΈΠ΅ ΠΌΠΎΠ³ΡΡ ΡΠΊΠ°Π·ΡΠ²Π°ΡΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ, ΡΠΆΠ΅ ΡΠ°Π·ΡΠ΅ΡΡΠ½Π½ΡΠ΅ Π΄Π»Ρ ΡΡΠΎΠ³ΠΎ Π£ΠΠ° ΠΈ, ΠΏΡΠΈ ΡΡΠΎΠΌ, Π½Π΅ Π²Ρ ΠΎΠ΄ΡΡΠΈΠ΅ Π² ΠΊΠΎΠ½ΠΊΡΡΡΠ½ΡΠ΅ Π³ΡΡΠΏΠΏΡ Π΅Π³ΠΎ Π½Π΅Π·Π°Π²Π΅ΡΡΡΠ½Π½ΡΡ ΠΏΡΠΈΡΠΌΠ½ΡΡ ΠΊΠ°ΠΌΠΏΠ°Π½ΠΈΠΉ.
1.2 ΠΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² ΠΌΠΎΠ΄Π΅Π»ΠΈ ΠΠ½Π°Π»ΠΈΠ· ΠΏΠΎΡΡΡΠΎΠ΅Π½Π½ΡΡ ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΠ» Π²ΡΠ΄Π΅Π»ΠΈΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΎΠ½Π½ΡΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΡ ΠΏΡΠ΅Π΄ΠΌΡΠ΅Π½ΠΎΠΉ ΠΎΠ±Π»Π°ΡΡΠΈ. Π‘ΠΎΡΡΠ°Π² ΠΈ Ρ Π°ΡΠ°ΠΊΡΠ΅ΡΠΈΡΡΠΈΠΊΠ° ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΎΠ½Π½ΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π° Π² ΡΠ°Π±Π». 1.
Π’Π°Π±Π»ΠΈΡΠ° 1. ΠΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΎΠ½Π½ΡΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΡ ΠΈ ΠΈΡ ΡΠ²ΠΎΠΉΡΡΠ²Π°
ΠΠΌΡ ΠΎΠ±ΡΠ΅ΠΊΡΠ° | ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΠ° | Π‘Π²ΠΎΠΉΡΡΠ²Π° ΠΎΠ±ΡΠ΅ΠΊΡΠ° | |
ΠΠ°ΠΏΡΠΎΡ Π½Π° ΡΠ΅Π΄Π°ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠΏΠΈΡΠΊΠ°. | Π‘ΠΎΠ΄Π΅ΡΠΆΠΈΡ ΠΏΠΎΠ»Π½ΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠΈ ΠΈ Π΄Π΅ΠΉΡΡΠ²ΠΈΠΈ, ΠΊΠΎΡΠΎΡΠΎΠ΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΡΠΎΠΈΠ·Π²Π΅ΡΡΠΈ. | ΠΠΎΠΌΠ΅Ρ Π·Π°ΠΏΡΠΎΡΠ° ΠΠΎΠΌΠ΅Ρ Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΠΈΠ΄ Π½Π°Π±ΠΎΡΠ° ΠΠ΅ΠΉΡΡΠ²ΠΈΠ΅ Π‘ΡΠ°ΡΡΡ Π·Π°ΡΠ²ΠΊΠΈ ΠΠ°ΡΠ° ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π·Π°ΡΠ²ΠΊΠΈ ΠΠ°ΡΠ° ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΡΡΠ°ΡΡΡΠ° Π·Π°ΡΠ²ΠΊΠΈ | |
ΠΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΉ ΠΊ Π·Π°ΡΠ²ΠΊΠ΅ | Π‘ΠΎΠ΄Π΅ΡΠΆΠΈΡ Π²Π΅ΡΠ²Ρ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠ΅Π² ΠΊ ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡ Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΈΠ½ΡΡΠΈΡΡΡΠ°. ΠΠ΅ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΡΠΉ Π°ΡΡΠΈΠ±ΡΡ. | ΠΠΎΠΌΠ΅Ρ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΡ ΠΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΎΡ ΠΠ°ΡΠ° ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΡ ΠΠΎΠΌΠ΅Ρ ΠΈΠ½ΡΡΡΠΈΡΡΡΠ° ΠΠΎΠΌΠ΅Ρ Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ | |
2. ΠΡΠΎΠ΅ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ
ΠΡΠΎΠ΅ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΠ ΠΏΡΠ΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΡ ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ ΡΠΈΠΏΠΎΠ²:
Β· ΠΠΎΠ΄Π΅Π»Ρ «ΡΡΡΠ½ΠΎΡΡΡ — ΡΠ²ΡΠ·Ρ», ΠΊΠΎΡΠΎΡΠ°Ρ ΡΡΡΠΎΠΈΡΡΡ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ Π²ΡΠ΄Π΅Π»Π΅Π½Π½ΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΎΠ½Π½ΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² ΠΈ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ ΡΠ²ΡΠ·Π΅ΠΉ ΠΌΠ΅ΠΆΠ΄Ρ Π½ΠΈΠΌΠΈ.
Β· Π Π΅Π»ΡΡΠΈΠΎΠ½Π½Π°Ρ ΠΌΠΎΠ΄Π΅Π»Ρ, ΠΊΠΎΡΠΎΡΠ°Ρ ΡΠΎΡΠΌΠΈΡΡΠ΅ΡΡΡ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ ΠΌΠΎΠ΄Π΅Π»ΠΈ «ΡΡΡΠ½ΠΎΡΡΡ — ΡΠ²ΡΠ·Ρ».
2.1 Π Π°Π·ΡΠ°Π±ΠΎΡΠΊΠ° ER-ΠΌΠΎΠ΄Π΅Π»ΠΈ
Π±Π°Π·Π° Π΄Π°Π½Π½ΡΠ΅ ΠΏΡΠ΅Π΄ΠΌΠ΅ΡΠ½ΡΠΉ ΠΏΡΠΎΠ΅ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΠ° ΠΎΡΠ½ΠΎΠ²Π΅ Π²ΡΠ΄Π΅Π»Π΅Π½Π½ΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΎΠ½Π½ΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² ΡΡΠ΅Π΄ΡΡΠ²Π°ΠΌΠΈ Microsoft Visio Π±ΡΠ»Π° ΠΏΠΎΡΡΡΠΎΠ΅Π½Π° ΠΌΠΎΠ΄Π΅Π»Ρ «ΡΡΡΠ½ΠΎΡΡΡ — ΡΠ²ΡΠ·Ρ» (ΡΠΈΡ. 2.1.).
Π ΠΈΡ. 2.1. ΠΠΎΠ΄Π΅Π»Ρ «ΡΡΡΠ½ΠΎΡΡΡ-ΡΠ²ΡΠ·Ρ» Π΄Π»Ρ ΠΠ ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ Π°ΡΡΠΈΠ±ΡΡΠΎΠ² ΡΠ°Π±Π»ΠΈΡΡ «ΠΠ°ΡΠ²ΠΊΠ°»:
ΠΠΎΠΌΠ΅Ρ Π·Π°ΡΠ²ΠΊΠΈ — ΡΠ΅Π»ΠΎΠ΅ ΡΠΈΡΠ»ΠΎ, Π½Π΅Π½ΡΠ»Π΅Π²ΠΎΠΉ ΡΠΈΠΏ, ΠΊΠ»ΡΡΠ΅Π²ΠΎΠΉ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ, ΡΠ²Π»ΡΠ΅ΡΡΡ Π²Π½Π΅ΡΠ½ΠΈΠΌ ΠΊΠ»ΡΡΠΎΠΌ (Π°ΡΡΠΈΠ±ΡΡ ΡΠ°Π±Π»ΠΈΡΡ ΠΠ½ΡΡΠΈΡΡΡ — ΠΠΎΠΌΠ΅Ρ ΠΈΠ½ΡΡΠΈΡΡΡΠ°),
ΠΠΎΠΌΠ΅Ρ Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ — ΡΠ΅Π»ΠΎΠ΅ ΡΠΈΡΠ»ΠΎ, Π½Π΅Π½ΡΠ»Π΅Π²ΠΎΠΉ ΡΠΈΠΏ, ΠΊΠ»ΡΡΠ΅Π²ΠΎΠΉ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ, ΡΠ²Π»ΡΠ΅ΡΡΡ Π²Π½Π΅ΡΠ½ΠΈΠΌ ΠΊΠ»ΡΡΠΎΠΌ (Π°ΡΡΠΈΠ±ΡΡ ΡΠ°Π±Π»ΠΈΡΡ ΠΠ°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΠΎΠ΄Π³ΠΎΡΠΎΠ²ΠΊΠΈ — ΠΠΎΠΌΠ΅Ρ Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ),
ΠΠ΅ΠΉΡΡΠ²ΠΈΠ΅ — ΡΡΡΠΎΠΊΠ°, Π½Π΅Π½ΡΠ»Π΅Π²Π°Ρ, Π΄Π»ΠΈΠ½Π° — 3,
Π‘ΡΠ°ΡΡΡ — ΡΡΡΠΎΠΊΠ°, Π½Π΅Π½ΡΠ»Π΅Π²Π°Ρ, Π΄Π»ΠΈΠ½Π° — 1,
Π’ΠΈΠΏ ΠΏΡΠΈΡΠΌΠ° Π½Π°Π±ΠΎΡΠ° — ΡΠ΅Π»ΠΎΠ΅ ΡΠΈΡΠ»ΠΎ, Π½Π΅Π½ΡΠ»Π΅Π²ΠΎΠ΅, ΠΠ°ΡΠ° ΡΠΎΠ·Π΄Π°Π½ΠΈΡ Π·Π°ΡΠ²ΠΊΠΈ — Π΄Π°ΡΠ°, Π½Π΅ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΡΠΉ Π°ΡΡΠΈΠ±ΡΡ, ΠΠ°ΡΠ° ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Π·Π°ΡΠ²ΠΊΠΈ — Π΄Π°ΡΠ°, Π½Π΅ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΡΠΉ Π°ΡΡΠΈΠ±ΡΡ.
ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ Π°ΡΡΠΈΠ±ΡΡΠΎΠ² ΡΠ°Π±Π»ΠΈΡΡ «ΠΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΉ»:
ΠΠΎΠΌΠ΅Ρ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΡ — ΡΠ΅Π»ΠΎΠ΅ ΡΠΈΡΠ»ΠΎ, Π½Π΅Π½ΡΠ»Π΅Π²ΠΎΠΉ ΡΠΈΠΏ, ΠΊΠ»ΡΡΠ΅Π²ΠΎΠΉ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ, ΠΠΎΠΌΠ΅Ρ Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ — ΡΠ΅Π»ΠΎΠ΅ ΡΠΈΡΠ»ΠΎ, Π½Π΅Π½ΡΠ»Π΅Π²ΠΎΠΉ ΡΠΈΠΏ, ΡΠ²Π»ΡΠ΅ΡΡΡ Π²Π½Π΅ΡΠ½ΠΈΠΌ ΠΊΠ»ΡΡΠΎΠΌ (Π°ΡΡΠΈΠ±ΡΡ ΡΠ°Π±Π»ΠΈΡΡ ΠΠ°ΡΠ²ΠΊΠ° — ΠΠΎΠΌΠ΅Ρ Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ),
ΠΠΎΠΌΠ΅Ρ ΠΈΠ½ΡΡΠΈΡΡΡΠ° — ΡΠ΅Π»ΠΎΠ΅ ΡΠΈΡΠ»ΠΎ, Π½Π΅Π½ΡΠ»Π΅Π²ΠΎΠΉ ΡΠΈΠΏ, ΡΠ²Π»ΡΠ΅ΡΡΡ Π²Π½Π΅ΡΠ½ΠΈΠΌ ΠΊΠ»ΡΡΠΎΠΌ (Π°ΡΡΠΈΠ±ΡΡ ΡΠ°Π±Π»ΠΈΡΡ ΠΠ°ΡΠ²ΠΊΠ° — ΠΠΎΠΌΠ΅Ρ Π·Π°ΡΠ²ΠΊΠΈ),
ΠΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΎΡ — ΡΡΡΠΎΠΊΠ°, Π½Π΅Π½ΡΠ»Π΅Π²Π°Ρ, ΠΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΉ — ΡΡΡΠΎΠΊΠ°, Π½Π΅ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΡΠΉ Π°ΡΡΠΈΠ±ΡΡ, ΠΠ°ΡΠ° Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΡ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΡ — Π΄Π°ΡΠ°, Π½Π΅ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΡΠΉ ΡΠΈΠΏ.
2.2 ΠΡΠΎΠ΅ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΡΠ°Π²ΠΈΠ» ΡΠ΅Π»ΠΎΡΡΠ½ΠΎΡΡΠΈ ΠΠ
ΠΠΎΠ»Π΅ | ΠΡΠ°Π²ΠΈΠ»ΠΎ ΡΠ΅Π»ΠΎΡΡΠ½ΠΎΡΡΠΈ | |
ΠΠ΅ΠΉΡΡΠ²ΠΈΠ΅ | ΠΠΎΠΆΠ΅Ρ ΠΏΡΠΈΠ½ΠΈΠΌΠ°ΡΡ ΡΠΎΠ»ΡΠΊΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ 'ADD' ΠΈΠ»ΠΈ `DEL' | |
Π‘ΡΠ°ΡΡΡ | ΠΠΎΠΆΠ΅Ρ ΠΏΡΠΈΠ½ΠΈΠΌΠ°ΡΡ ΡΠΎΠ»ΡΠΊΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ 'A', 'D' ΠΈΠ»ΠΈ 'W' | |
ΠΠΎΠΌΠ΅Ρ Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ | ΠΠΎΠ»ΡΡΠ΅ Π½ΡΠ»Ρ | |
ΠΠΎΠΌΠ΅Ρ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΡ | ΠΠΎΠ»ΡΡΠ΅ Π½ΡΠ»Ρ | |
ΠΠΎΠΌΠ΅Ρ Π·Π°ΡΠ²ΠΊΠΈ | ΠΠΎΠ»ΡΡΠ΅ Π½ΡΠ»Ρ | |
Π’ΠΈΠΏ ΠΏΡΠΈΡΠΌΠ° Π½Π°Π±ΠΎΡΠ° | Π§ΠΈΡΠ»ΠΎ ΠΎΡ 1 Π΄ΠΎ 10 | |
ΠΡΠ΅ ΠΏΠΎΠ»Ρ ΡΠΈΠΏΠ° Date | ΠΠ΅ ΡΠ°Π½Π΅Π΅ 01.01.2013 | |
2.3 ΠΠ½Π°Π»ΠΈΠ· ΡΠ΅Π»ΡΡΠΈΠΎΠ½Π½ΠΎΠΉ ΠΌΠΎΠ΄Π΅Π»ΠΈ
Π ΠΈΡ. 2.2 Π Π΅Π»ΡΡΠΈΠΎΠ½Π½Π°Ρ ΠΌΠΎΠ΄Π΅Π»Ρ ΠΠ ΠΠ»Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ Ρ ΠΎΡΠΎΡΠΈΡ Ρ Π°ΡΠ°ΠΊΡΠ΅ΡΠΈΡΡΠΈΠΊ ΡΠ°Π±ΠΎΡΡ Ρ ΠΠ, ΠΎΠ½Π° Π΄ΠΎΠ»ΠΆΠ½Π° Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡΡ Π² 3ΠΠ€. ΠΠ»Ρ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ ΡΡΠΎΠ³ΠΎ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΡΡ Π°ΡΠΎΠΌΠ°ΡΠ½ΠΎΡΡΡ Π°ΡΡΠΈΠ±ΡΡΠΎΠ², Π²ΡΠ΄Π΅Π»ΠΈΡΡ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΠ΅ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ (Π€Π) ΠΌΠ΅ΠΆΠ΄Ρ Π°ΡΡΠΈΠ±ΡΡΠ°ΠΌΠΈ Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΠΎΡΠ½ΠΎΡΠ΅Π½ΠΈΠΈ ΠΈ ΠΏΡΠΎΠ²Π΅ΡΡΠΈ ΠΈΡ Π°Π½Π°Π»ΠΈΠ·.
ΠΡΠ½ΠΎΡΠ΅Π½ΠΈΠ΅ Request Direction, ΠΊΠ»ΡΡ ΠΎΡΠ½ΠΎΡΠ΅Π½ΠΈΡ:
Request ID — ΠΠ½Π΅ΡΠ½ΠΈΠΉ ΠΊΠ»ΡΡ ΠΎΡΠ½ΠΎΡΠ΅Π½ΠΈΡ Institution, Π°ΡΡΠΈΠ±ΡΡ InstitutionID,
DirectionID — ΠΠ½Π΅ΡΠ½ΠΈΠΉ ΠΊΠ»ΡΡ ΠΎΡΠ½ΠΎΠ΅Π½ΠΈΡ Direction, Π°ΡΡΠΈΠ±ΡΡ DirectionID.
Π€ΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΠ΅ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ:
Request ID, DirectionID > Activity,
Request ID, DirectionID > Action,
Request ID, DirectionID > ChangedDate,
Request ID, DirectionID > CreationDate,
DirectionID > AdmissionItemType.
ΠΡΠ½ΠΎΡΠ΅Π½ΠΈΠ΅ RequestComments, ΠΊΠ»ΡΡ ΠΎΡΠ½ΠΎΡΠ΅Π½ΠΈΡ:
Comment ID.
Π€ΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΠ΅ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ:
CommentID > Commentor,
CommentID > Comment,
CommentID > Date,
CommentID > DirectionID,
CommentID > InstitutionID.
ΠΡΡΠ³ΠΈΡ Π€Π Π΄Π»Ρ ΠΎΡΠ½ΠΎΡΠ΅Π½ΠΈΠΉ Π½Π΅ Π²ΡΡΠ²Π»Π΅Π½ΠΎ. ΠΠ±ΠΎΡΠ½ΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π°Ρ ΠΎΠΆΠ΄Π΅Π½ΠΈΡ ΠΠ Π² 3ΠΠ€ ΠΏΡΠ΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅Ρ ΠΏΡΠΎΠ²Π΅ΡΠΊΡ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΠΉ, Π½Π°ΠΊΠ»Π°Π΄ΡΠ²Π°Π΅ΠΌΡΡ Π² 3ΠΠ€.
1. ΠΡΠ΅ ΡΠ°Π±Π»ΠΈΡΡ ΠΠ Π½Π°Ρ ΠΎΠ΄ΡΡΡΡ Π² 1ΠΠ€, ΠΈΡ ΠΏΠΎΠ»Ρ ΡΠΎΠ΄Π΅ΡΠΆΠ°Ρ Π°ΡΠΎΠΌΠ°ΡΠ½ΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ.
2. ΠΠΎΠ»Π½Π°Ρ Π€Π Π½Π΅ΠΊΠ»ΡΡΠ΅Π²ΡΡ Π°ΡΡΠΈΠ±ΡΡΠΎΠ² ΠΎΡ ΠΊΠ»ΡΡΠ° Π΄Π»Ρ RequestComments ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°Π΅ΡΡΡ ΡΠ΅ΠΌ, ΡΡΠΎ ΠΊΠ»ΡΡ Π² ΡΡΠΎΠΌ ΠΎΡΠ½ΠΎΡΠ΅Π½ΠΈΠΈ ΠΏΡΠΎΡΡΠΎΠΉ.
3. ΠΠ»Ρ ΠΎΡΠ½ΠΎΡΠ΅Π½ΠΈΡ RequestDirection ΠΏΠΎΠ»Π½Π°Ρ Π€Π ΠΌΠ΅ΠΆΠ΄Ρ Π½Π΅ΠΊΠ»ΡΡΠ΅Π²ΡΠΌΠΈ Π°ΡΡΠΈΠ±ΡΡΠ°ΠΌΠΈ ΠΈ ΡΠΎΡΡΠ°Π²Π½ΡΠΌ ΠΊΠ»ΡΡΠΎΠΌ ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ.
4. Π ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ°Π½Π½ΡΡ ΠΎΡΠ½ΠΎΡΠ΅Π½ΠΈΡΡ ΠΎΡΡΡΡΡΡΠ²ΡΡΡ ΡΡΠ°Π½Π·ΠΈΡΠΈΠ²Π½ΡΠ΅ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ.
Π‘Π»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎ, ΠΠ Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡ Π² 3ΠΠ€.
3. Π Π΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ
Π ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π‘Π£ΠΠ Π΄Π»Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΠ Π² ΠΊΡΡΡΠΎΠ²ΠΎΠΌ ΠΏΡΠΎΠ΅ΠΊΡΠ΅ Π±ΡΠ»Π° Π²ΡΠ±ΡΠ°Π½Π° Π‘Π£ΠΠ Microsoft SQL Server. ΠΡΠ° Π‘Π£ΠΠ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ°Π½Π° ΠΊΠΎΡΠΏΠΎΡΠ°ΡΠΈΠ΅ΠΉ Microsoft ΠΈ ΠΏΠΎΠ΄Π΄ΡΠ΅ΠΆΠΈΠ²Π°Π΅Ρ ΡΠ΅Π»ΡΡΠΈΠΎΠ½Π½ΡΡ ΠΌΠΎΠ΄Π΅Π»Ρ ΠΠ. ΠΡΠ½ΠΎΠ²Π½ΠΎΠΉ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΠΉ ΡΠ·ΡΠΊ Π·Π°ΠΏΡΠΎΡΠΎΠ² — Transact-SQL, ΡΠΎΠ·Π΄Π°Π½Π½ΡΠΉ ΡΠΎΠ²ΠΌΠ΅ΡΡΠ½ΠΎ Microsoft ΠΈ Sybase. Transact-SQL ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠ΅ΠΉ ΡΡΠ°Π½Π΄Π°ΡΡΠ° ANSI/ISO ΡΡΡΡΠΊΡΡΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΡΠ·ΡΠΊΠ° Π·Π°ΠΏΡΠΎΡΠΎΠ² (SQL) Ρ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΡΠΌΠΈ. Π‘Π£ΠΠ SQL Server ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ ΡΠΎ ΡΡΠ΅Π΄Π½ΠΈΠΌΠΈ ΠΈ Π±ΠΎΠ»ΡΡΠΈΠΌΠΈ ΠΠ. ΠΠΈΠΆΠ΅ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½ΠΎ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΠΠ ΡΡΠ΅Π΄ΡΡΠ²Π°ΠΌΠΈ Transact-SQL.
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_PADDING ON
GO
CREATE TABLE [dbo]. RequestDirection](
[Direction ID] [int] NOT NULL,
[Request ID] [int] NOT NULL,
[Activity] [varchar](1) NOT NULL,
[Action] [varchar](10) NOT NULL,
[AdmissionItemType] [int] NOT NULL,
[CreationDate] [datetime] NULL,
[ChangeDate] [datetime] NULL,
CONSTRAINT [PK_RequestDirection] PRIMARY KEY CLUSTERED
(
[Direction ID] ASC,
[Request ID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
SET ANSI_PADDING OFF
GO
ALTER TABLE [dbo]. RequestDirection] WITH CHECK ADD CONSTRAINT [FK_RequestDirection_Request] FOREIGN KEY ([Request ID])
REFERENCES [dbo]. Institution] ([InstitutionID])
GO
ALTER TABLE [dbo]. RequestDirection] CHECK CONSTRAINT [FK_RequestDirection_Request]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_PADDING ON
GO
CREATE TABLE [dbo]. RequestComments](
[Comment ID] [int] NOT NULL,
[Commentor] [varchar](5) NOT NULL,
[Comment] [text] NULL,
[Date] [datetime] NULL,
[DirectionID] [int] NOT NULL,
[InstitutionID] [int] NOT NULL,
CONSTRAINT [PK_RequestComments] PRIMARY KEY CLUSTERED
(
[Comment ID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
GO
SET ANSI_PADDING OFF
GO
ALTER TABLE [dbo]. RequestComments] WITH NOCHECK ADD CONSTRAINT [FK_RequestComments_RequestDirection] FOREIGN KEY ([DirectionID], [InstitutionID])
REFERENCES [dbo]. RequestDirection] ([Direction ID], [Request ID])
GO
ALTER TABLE [dbo]. RequestComments] NOCHECK CONSTRAINT [FK_RequestComments_RequestDirection]
GO
4. ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½Π°Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ
ΠΠ»Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Ρ ΠΠ Π²ΡΠ±ΡΠ°Π½ ΡΠ·ΡΠΊ Π‘# ΠΈ ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΡ ADO.NET Entity Framework.
4.1 ADO .NET ΠΈ Entity Framework
ADO.NET ΡΠ²Π»ΡΠ΅ΡΡΡ Π½Π°Π±ΠΎΡΠΎΠΌ ΠΊΠ»Π°ΡΡΠΎΠ², ΡΠ΅Π°Π»ΠΈΠ·ΡΡΡΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΡΠ΅ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΡ Π΄Π»Ρ ΠΎΠ±Π»Π΅Π³ΡΠ΅Π½ΠΈΡ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ ΠΊ ΠΠ ΠΈΠ· ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΠΎ ΠΎΡ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΠ΅ΠΉ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠΉ Π‘Π£ΠΠ. ADO .NET ΡΠΈΡΠΎΠΊΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΡΠΎΠ²ΠΌΠ΅ΡΡΠ½ΠΎ Ρ ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΠ΅ΠΉ web-ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² ASP .NET Π΄Π»Ρ Π΄ΠΎΡΡΡΠΏΠ° ΠΊ ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½Π½ΡΠΌ Π½Π° ΡΠ΅ΡΠ²Π΅ΡΠ΅ Π±Π°Π·Π°ΠΌ Π΄Π°Π½Π½ΡΡ ΡΠΎ ΡΡΠΎΡΠΎΠ½Ρ ΠΊΠ»ΠΈΠ΅Π½ΡΠ°.
ΠΠ±ΡΠ΅ΠΊΡΠ½Π°Ρ ΠΌΠΎΠ΄Π΅Π»Ρ ADO .NET ΡΠ΅Π°Π»ΠΈΠ·ΡΠ΅Ρ ΠΎΡΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½Π½ΡΠΉ Π΄ΠΎΡΡΡΠΏ ΠΊ Π΄Π°Π½Π½ΡΠΌ. ΠΡΠΈ ΡΡΠΎΠΌ Π² Visual Studio .NET ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ Π²ΡΡΡΠΎΠ΅Π½Π½ΡΡ ΠΌΠ°ΡΡΠ΅ΡΠΎΠ² ΠΈ Π΄ΠΈΠ·Π°ΠΉΠ½Π΅ΡΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΡ Π΄ΠΎΡΡΡΠΏΠ° ΠΊ ΠΠ Π΅ΡΠ΅ Π½Π° ΡΡΠ°ΠΏΠ΅ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°. Π‘ Π΄ΡΡΠ³ΠΎΠΉ ΡΡΠΎΡΠΎΠ½Ρ, Π·Π°Π΄Π°ΡΠ° ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ Π΄ΠΎΡΡΡΠΏΠ° ΠΊ Π΄Π°Π½Π½ΡΠΌ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΡΠ΅ΡΠ΅Π½Π° Π½Π΅ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²Π΅Π½Π½ΠΎ Π²ΠΎ Π²ΡΠ΅ΠΌΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ.
ΠΠΎΠ½ΡΠ΅ΠΏΡΠΈΡ Π΄ΠΎΡΡΡΠΏΠ° ΠΊ Π΄Π°Π½Π½ΡΠΌ Π² ADO .NET ΠΎΡΠ½ΠΎΠ²Π°Π½Π° Π½Π° ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ Π΄Π²ΡΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ²:
* Π½Π°Π±ΠΎΡΠ° Π΄Π°Π½Π½ΡΡ (ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅ΡΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠΌ ΠΊΠ»Π°ΡΡΠ° DataSet) ΡΠΎ ΡΡΠΎΡΠΎΠ½Ρ ΠΊΠ»ΠΈΠ΅Π½ΡΠ°. ΠΡΠΎ Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎΠ΅ Π²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠ΅ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ Π΄Π°Π½Π½ΡΡ ;
* ΠΏΡΠΎΠ²Π°ΠΉΠ΄Π΅ΡΠ° Π΄Π°Π½Π½ΡΡ (ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅ΡΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠΌ ΠΊΠ»Π°ΡΡΠ° DataProvider). ΠΡΠΎ ΠΏΠΎΡΡΠ΅Π΄Π½ΠΈΠΊ, ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°ΡΡΠΈΠΉ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΈ Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ ΡΠΎ ΡΡΠΎΡΠΎΠ½Ρ Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ (Π² ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΡ — ΡΠΎ ΡΡΠΎΡΠΎΠ½Ρ ΡΠ΅ΡΠ²Π΅ΡΠ°).
ΠΠ±ΡΠ΅ΠΊΡΠ½Π°Ρ ΠΌΠΎΠ΄Π΅Π»Ρ ADO .NET ΠΏΡΠ΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅Ρ ΡΡΡΠ΅ΡΡΠ²ΠΎΠ²Π°Π½ΠΈΠ΅ (ΠΏΡΠΈ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Ρ Π±Π°Π·ΠΎΠΉ Π΄Π°Π½Π½ΡΡ — ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅) Π΄Π²ΡΡ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ² ΠΊΠ»Π°ΡΡΠΎΠ², Π²ΡΠΏΠΎΠ»Π½ΡΡΡΠΈΡ ΡΠ΅ΡΠΊΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠ΅ Π·Π°Π΄Π°ΡΠΈ ΠΏΡΠΈ ΡΠ°Π±ΠΎΡΠ΅ Ρ Π±Π°Π·ΠΎΠΉ Π΄Π°Π½Π½ΡΡ .
ΠΠ»Π°ΡΡΠΎΡΠΌΠ° Entity Framework ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ°ΠΌ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π΄Π»Ρ Π΄ΠΎΡΡΡΠΏΠ° ΠΊ Π΄Π°Π½Π½ΡΠΌ, ΡΠ°Π±ΠΎΡΠ°ΡΡΠΈΠ΅ Ρ ΠΊΠΎΠ½ΡΠ΅ΠΏΡΡΠ°Π»ΡΠ½ΠΎΠΉ ΠΌΠΎΠ΄Π΅Π»ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, Π° Π½Π΅ Π½Π°ΠΏΡΡΠΌΡΡ Ρ ΡΠ΅Π»ΡΡΠΈΠΎΠ½Π½ΠΎΠΉ ΡΡ Π΅ΠΌΠΎΠΉ Ρ ΡΠ°Π½Π΅Π½ΠΈΡ. Π¦Π΅Π»Ρ ΡΠΎΡΡΠΎΠΈΡ Π² ΡΠΌΠ΅Π½ΡΡΠ΅Π½ΠΈΠΈ ΠΎΠ±ΡΠ΅ΠΌΠ° ΠΊΠΎΠ΄Π° ΠΈ ΡΠ½ΠΈΠΆΠ΅Π½ΠΈΠΈ Π·Π°ΡΡΠ°Ρ Π½Π° ΡΠΎΠΏΡΠΎΠ²ΠΎΠΆΠ΄Π΅Π½ΠΈΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, ΠΎΡΠΈΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½Π½ΡΡ Π½Π° ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΡ Π΄Π°Π½Π½ΡΡ . ΠΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Entity Framework ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΠΏΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ²Π°.
ΠΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΌΠΎΠ³ΡΡ ΡΠ°Π±ΠΎΡΠ°ΡΡ ΠΊΠΎΠ½ΡΠ΅ΠΏΡΡΠ°Π»ΡΠ½ΠΎΠΉ ΠΌΠΎΠ΄Π΅Π»ΡΡ Π² ΡΠ΅ΡΠΌΠΈΠ½Π°Ρ ΠΏΡΠ΅Π΄ΠΌΠ΅ΡΠ½ΠΎΠΉ ΠΎΠ±Π»Π°ΡΡΠΈ — Π² ΡΠΎΠΌ ΡΠΈΡΠ»Π΅ Ρ Π½Π°ΡΠ»Π΅Π΄ΡΠ΅ΠΌΡΠΌΠΈ ΡΠΈΠΏΠ°ΠΌΠΈ, ΡΠ»ΠΎΠΆΠ½ΡΠΌΠΈ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΠΌΠΈ ΠΈ ΡΠ²ΡΠ·ΡΠΌΠΈ.
ΠΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΎΡΠ²ΠΎΠ±ΠΎΠΆΠ΄Π°ΡΡΡΡ ΠΎΡ ΠΆΠ΅ΡΡΠΊΠΈΡ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ ΠΎΡ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠ³ΠΎ ΡΠ΄ΡΠ° Π‘Π£ΠΠ ΠΈΠ»ΠΈ ΡΡ Π΅ΠΌΡ Ρ ΡΠ°Π½Π΅Π½ΠΈΡ.
Π‘ΠΎΠΏΠΎΡΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΌΠ΅ΠΆΠ΄Ρ ΠΊΠΎΠ½ΡΠ΅ΠΏΡΡΠ°Π»ΡΠ½ΠΎΠΉ ΠΌΠΎΠ΄Π΅Π»ΡΡ ΠΈ ΡΡ Π΅ΠΌΠΎΠΉ, ΡΠΏΠ΅ΡΠΈΡΠΈΡΠ½ΠΎΠΉ Π΄Π»Ρ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠ³ΠΎ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ°, ΠΌΠΎΠ³ΡΡ ΠΌΠ΅Π½ΡΡΡΡΡ Π±Π΅Π· ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΠΊΠΎΠ΄Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ.
Π Π°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ ΠΈΠΌΠ΅ΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΡΠ°Π±ΠΎΡΠ°ΡΡ Ρ ΡΠΎΠ³Π»Π°ΡΠΎΠ²Π°Π½Π½ΠΎΠΉ ΠΌΠΎΠ΄Π΅Π»ΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΡΠΎΠΏΠΎΡΡΠ°Π²Π»Π΅Π½Π° Ρ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠΌΠΈ ΡΡ Π΅ΠΌΠ°ΠΌΠΈ Ρ ΡΠ°Π½Π΅Π½ΠΈΡ, ΠΊΠΎΡΠΎΡΡΠ΅, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Ρ Π² ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ ΡΠΈΡΡΠ΅ΠΌΠ°Ρ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ Π΄Π°Π½Π½ΡΠΌΠΈ.
ΠΠ΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΊΠΎΠ½ΡΠ΅ΠΏΡΡΠ°Π»ΡΠ½ΡΡ ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΡΠΎΠΏΠΎΡΡΠ°Π²Π»Π΅Π½Ρ Ρ Π΅Π΄ΠΈΠ½ΠΎΠΉ ΡΡ Π΅ΠΌΠΎΠΉ Ρ ΡΠ°Π½Π΅Π½ΠΈΡ.
ΠΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° Π·Π°ΠΏΡΠΎΡΠΎΠ² LINQ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°Π΅Ρ ΠΏΡΠΎΠ²Π΅ΡΠΊΡ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ° Π²ΠΎ Π²ΡΠ΅ΠΌΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ Π΄Π»Ρ Π·Π°ΠΏΡΠΎΡΠΎΠ² ΠΊ ΠΊΠΎΠ½ΡΠ΅ΠΏΡΡΠ°Π»ΡΠ½ΠΎΠΉ ΠΌΠΎΠ΄Π΅Π»ΠΈ.
ΠΠ»Π°ΡΡΠΎΡΠΌΠ° Entity Framework Π²ΠΏΠ΅ΡΠ²ΡΠ΅ ΠΏΠΎΡΠ²ΠΈΠ»Π°ΡΡ ΠΊΠ°ΠΊ ΡΠ°ΡΡΡ ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ .NET Framework ΠΈ Π²ΡΠΏΡΡΠΊΠ΅ Microsoft Visual Studio. ΠΠ°ΡΠΈΠ½Π°Ρ Ρ Entity Framework Π²Π΅ΡΡΠΈΠΈ 4.1 ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ° Entity Framework Π½Π΅ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠ°ΡΡΡΡ .NET Framework, Π½ΠΎ ΠΏΠΎΡΡΡΠΎΠ΅Π½Π° Π½Π° Π΅Π΅ ΠΎΡΠ½ΠΎΠ²Π΅.
4.2 ΠΡΠΈΠΌΠ΅ΡΡ ΡΠΊΡΠ°Π½Π½ΡΡ ΡΠΎΡΠΌ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ°
Π ΠΈΡ. 4.1 Π€ΠΎΡΠΌΠ° Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΡ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΡ ΠΠ΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΎΡΠΎΠΌ ΡΠΈΡΡΠ΅ΠΌΡ Π² ΡΠ»ΡΡΠ°Π΅ ΠΎΡΠΊΠ°Π·Π° Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π·Π°ΡΠ²ΠΊΠΈ Π ΠΈΡ. 4.2 Π’Π°Π±Π»ΠΈΡΠ° Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠΉ ΡΠΊΠ°Π·Π°Π½Π½ΡΡ Π² Π·Π°ΡΠ²ΠΊΠ΅ Π½Π° Π²ΡΠ±ΡΠ°Π½Π½ΠΎΠ΅ ΠΠ£ Π ΠΈΡ. 4.3 Π‘ΠΏΠΈΡΠΎΠΊ ΠΠ£, Ρ ΠΊΠΎΡΠΎΡΡΡ Π΅ΡΡΡ Π·Π°ΡΠ²ΠΊΠΈ Π ΠΈΡ. 4.4 ΠΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΡ Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠΉ Π² Π·Π°ΡΠ²ΠΊΡ Π ΠΈΡ. 4.5 ΠΠ½ΠΎΠΏΠΊΠ° Π²ΡΠ·ΡΠ²Π°ΡΡΠ°Ρ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ Π·Π°ΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π·Π°ΡΠ²ΠΊΠΈ Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π ΠΈΡ. 4.6 Π‘ΠΏΠΈΡΠΎΠΊ Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠΉ Π² Π·Π°ΡΠ²ΠΊΠ΅ (ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ) Π ΠΈΡ. 4.7 Π‘ΠΏΠΈΡΠΎΠΊ ΡΠ°Π·ΡΠ΅ΡΡΠ½Π½ΡΡ Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠΉ ΠΏΠΎΡΠ»Π΅ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π·Π°ΡΠ²ΠΊΠΈ
1. Microsoft Development network http://msdn.microsoft.com/en-US/
2. Π. Π. Π‘ΠΈΠ΄ΠΎΡΠΎΠ²Π°. ΠΠ°Π·Ρ Π΄Π°Π½Π½ΡΡ . ΠΠ΅ΡΠΎΠ΄ΠΈΡΠ΅ΡΠΊΠΎΠ΅ ΠΏΠΎΡΠΎΠ±ΠΈΠ΅ ΠΊ ΠΊΡΡΡΠΎΠ²ΠΎΠΌΡ ΠΏΡΠΎΠ΅ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ. — Π.: ΠΠ·Π΄-Π²ΠΎ ΠΠΠ, 2010. — 40 Ρ.
3. Π ΠΈΡ ΡΠ΅Ρ ΠΠΆ. CLR via C#. ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π° ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ΅ Microsoft .NET Framework 4.0 Π½Π° ΡΠ·ΡΠΊΠ΅ C#. — ΠΠ΅ΡΠ΅Π²ΠΎΠ΄ΡΠΈΠΊ: Π Π°Π΄ΡΠ΅Π½ΠΊΠΎ Π., Π ΡΠ·ΠΌΠ°ΠΉΠΊΠΈΠ½Π° Π., «ΠΠΈΡΠ΅Ρ», 2012 — 928 Ρ.
ΠΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ 1. ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΡΠΉ ΠΊΠΎΠ΄, ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠΈΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΡ Ρ ΠΠ
ΠΠΎΠ½ΡΡΠΎΠ»Π»ΡΡΡ — ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΠ£:
[HttpPost]
[Authorize (Roles = UserRole. EduAdmin)]
public AjaxResultModel RequestDisabled ()
{
using (InstitutionsEntities dbContext = new InstitutionsEntities ())
{
return new AjaxResultModel { Data = (dbContext.RequestDirection.Any (x => x. Activity == «A»)) };
}
}
[HttpPost]
[Authorize (Roles = UserRole. EduAdmin)]
public ActionResult CancelRequest (string directionID)
{
using (InstitutionsEntities dbContext = new InstitutionsEntities ())
{
int dir = Convert. ToInt32(directionID);
//IQueryable tlist = dbContext.Request.Where (x => x. InstitutionID == InstitutionID).Select (x => x. ID_Request);
RequestDirection toCancel = dbContext.RequestDirection.Where (x => x. Direction_ID == dir && x. Request_ID == InstitutionID).First ();
if (toCancel.Activity == «W»)
{
dbContext.DeleteObject (toCancel);
dbContext.SaveChanges ();
// TODO: Finish Comment Deleting
return new AjaxResultModel ();
}
else
return new AjaxResultModel («ΠΠ°Π½Π½ΠΎΠ΅ Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π² Π΄Π°Π½Π½ΡΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°Π΅ΡΡΡ Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΎΡΠΎΠΌ.»);
}
}
[HttpPost]
[Authorize (Roles = UserRole. EduAdmin)]
public ActionResult AllowedDirectionsGetAvailableEdu (AllowedDirectionAddViewModel model)
{
using (InstitutionsEntities dbContext = new InstitutionsEntities ())
{
return dbContext. GetRemainedAvailableAllowedDirections (model, InstitutionID);
}
}
[HttpPost]
[Authorize (Roles = UserRole. EduAdmin)]
public ActionResult AllowedDirectionsGetExistingEdu (AllowedDirectionAddViewModel model)
{
using (InstitutionsEntities dbContext = new InstitutionsEntities ())
{
return dbContext. GetAllowedDirections (model, InstitutionID);
}
}
[HttpPost]
[Authorize (Roles = UserRole. EduAdmin)]
public ActionResult RequestDirectionListDenied ()
{
using (InstitutionsEntities dbContext = new InstitutionsEntities ())
{
return dbContext. GetDeniedDirections (InstitutionID);
}
}
[HttpPost]
[Authorize (Roles = UserRole. EduAdmin)]
public ActionResult ClearAllDenied ()
{
using (InstitutionsEntities dbContext = new InstitutionsEntities ())
{
return dbContext. DeleteDenied (InstitutionID);
}
}
[HttpPost]
[Authorize (Roles = UserRole. EduAdmin)]
public ActionResult AllowedDirectionsDeleteEdu ()
{
using (InstitutionsEntities dbContext = new InstitutionsEntities ())
{
var model = dbContext. FillAllowedDirectionAddModel ();
return PartialView («Admission/DeleteAllowedDirectionEdu», model);
}
}
[HttpPost]
[Authorize (Roles = UserRole. EduAdmin)]
public ActionResult RequestDirectionListToAdd ()
{
using (InstitutionsEntities dbContext = new InstitutionsEntities ())
{
return dbContext. GetRequestedToAddDirections (InstitutionID);
}
}
[HttpPost]
[Authorize (Roles = UserRole. EduAdmin)]
public ActionResult RequestDirectionListToDelete ()
{
using (InstitutionsEntities dbContext = new InstitutionsEntities ())
{
return dbContext. GetRequestedToDeleteDirections (InstitutionID);
}
}
[HttpPost]
[Authorize (Roles = UserRole. EduAdmin)]
public ActionResult DeleteDirectionRequest (int? directionid, string comment, int? admissiontype)
{
int DirID = directionid ?? 0;
int AdType = admissiontype ?? 0;
if (DirID == 0) return new AjaxResultModel (««);
if (AdType == 0) return new AjaxResultModel (««);
using (InstitutionsEntities dbContext = new InstitutionsEntities ())
{
using (EntrantsEntities dbContext1 = new EntrantsEntities ())
{
if (dbContext1.IsInCompetitiveGroup (InstitutionID, DirID, AdType))
{
string s = dbContext.Direction.Where (x => x. DirectionID == DirID).Select (x => x.Name).Single ().ToString ();
//return new AjaxResultModel (@" ΠΠ΅Π»ΡΠ·Ρ ΡΠ΄Π°Π»ΠΈΡΡ Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ «» «+ s + @» «» Ρ.ΠΊ. ΠΎΠ½ΠΎ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡΡΡ Π² ΠΊΠΎΠ½ΠΊΡΡΡΠ½ΡΡ Π³ΡΡΠΏΠΏΠ°Ρ .");
return new AjaxResultModel (s);
}
}
try
{
RequestDirection req = Model.Institutions.RequestDirection.CreateRequestDirection (DirID, InstitutionID, «W», «Delete», AdType);
dbContext.RequestDirection.AddObject (req);
dbContext.SaveChanges ();
int y;
/*try
{*/
y = dbContext.RequestComments.Select (x => x. Comment_ID).Count ();
/*}
catch (System.InvalidOperationException)
{ y = 0; }*/
RequestComments rc = Model.Institutions.RequestComments.CreateRequestComments (y + 1, «U», DirID, InstitutionID);;
rc.Comment = comment;
dbContext.RequestComments.AddObject (rc);
dbContext.SaveChanges ();
}
catch (System.Data.UpdateException)
{
return new AjaxResultModel ();
}
return new AjaxResultModel ();
}
}
[HttpPost]
[Authorize (Roles = UserRole. EduAdmin)]
public ActionResult AddDirectionRequest (int? directionid, string comment, int? admissiontype)
{
if (directionid == null) return new AjaxResultModel ();
using (InstitutionsEntities dbContext = new InstitutionsEntities ())
{
try
{
RequestDirection req = Model.Institutions.RequestDirection.CreateRequestDirection (directionid ?? 0, InstitutionID, «W», «Add», admissiontype ?? 0);
dbContext.RequestDirection.AddObject (req);
//dbContext.SaveChanges ();
int y;
/*try
{*/
y = dbContext.RequestComments.Count ();
/*}
catch (System.InvalidOperationException)
{ y = 0; }*/
RequestComments rc = Model.Institutions.RequestComments.CreateRequestComments (y + 1, «U», directionid ?? 0, InstitutionID);
rc.Comment = comment;
dbContext.RequestComments.AddObject (rc);
dbContext.SaveChanges ();
}
catch (System.Data.UpdateException)
{
}
return new AjaxResultModel ();
}
}
[HttpPost]
[Authorize (Roles = UserRole. EduAdmin)]
public ActionResult AllowedDirectionsAddEdu ()
{
using (InstitutionsEntities dbContext = new InstitutionsEntities ())
{
var model = dbContext. FillAllowedDirectionAddModel ();
return PartialView («Admission/AddAllowedDirectionEdu», model);
}
}
Π€ΡΠ½ΠΊΡΠΈΠΈ ΠΈΠ· ΡΠ°ΠΉΠ»ΠΎΠ² ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΡ:
public static AjaxResultModel GetAllowedDirections (this InstitutionsEntities dbContext, AllowedDirectionAddViewModel model, int institutionID)
{
var existing = dbContext. AllowedDirections
.Where (x => x. InstitutionID == institutionID && x. AdmissionItemTypeID == model. EducationLevelID && x.Direction.ParentID == model. ParentDirectionID)
.Select (x => x. DirectionID);
List qualCodes = new List ();
// Π²ΡΠ±ΠΈΡΠ°Π΅ΠΌ ΠΏΠΎ ΠΊΠΎΠ΄Ρ ΠΊΠ²Π°Π»ΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ, ΠΊΠΎΡΠΎΡΡΠΉ Π·Π°Π²ΠΈΡΠΈΡ ΠΎΡ ΡΡΠΎΠ²Π½Ρ ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ
if (model.EducationLevelID == EDLevelConst. Bachelor)
qualCodes.Add («62»);
if (model.EducationLevelID == EDLevelConst. BachelorShort)
qualCodes.Add («62»);
if (model.EducationLevelID == EDLevelConst. Magistracy)
qualCodes.Add («68»);
if (model.EducationLevelID == EDLevelConst. SPO)
{
qualCodes.Add («51»);
qualCodes.Add («52»);
}
if (model.EducationLevelID == EDLevelConst. Speciality)
qualCodes.Add («65»);
var avail =
dbContext.Direction.Where (x => x. ParentID == model. ParentDirectionID && existing. Contains (x.DirectionID))
.OrderBy (x => x. Code)
.Select (x => new { ID = x. DirectionID, Code = x. Code, Name = x.Name, Period = x. PERIOD, x. QUALIFICATIONCODE }).ToArray ()
.Where (x => qualCodes. Contains ((x.QUALIFICATIONCODE ?? «»).Trim ()))
.Select (x => new { ID = x. ID, Code = x. Code, QualificationCode = x. QUALIFICATIONCODE, Name = x.Name, Period = (x.Period ?? «»).Trim () }).ToArray ();
return new AjaxResultModel { Data = avail };
}
/// Π‘ΠΏΠΈΡΠΎΠΊ Π½Π°ΠΏΡΠ²Π°Π»Π΅Π½ΠΈΠΉ ΠΎΡΡΠ°ΠΆΡΠ½Π½ΡΡ Π² Π·Π°ΡΠ²ΠΊΠ΅ Π½Π° Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅
public static AjaxResultModel GetRequestedToAddDirections (this InstitutionsEntities dbContext, int institutionID)
{
List temp1;
temp1 = dbContext.RequestDirection.Where (y => y. Activity == «W» && y. Request_ID == institutionID && y. Action == «Add»).Select (n => n. Direction_ID).ToList ();
List temp2 = new List ();
foreach (int intro in temp1)
{
temp2.Add (Convert.ToInt32(intro));
}
var avail =
dbContext.Direction.Where (x => x. DirectionID > 0 && temp2. Contains (x.DirectionID))
.OrderBy (x => x. Code)
.Select (x => new { ID = x. DirectionID, Code = x. Code, Name = x.Name, Period = x. PERIOD, x. QUALIFICATIONCODE }).ToArray ()
//.Where (x => qualCodes. Contains ((x.QUALIFICATIONCODE ?? «»).Trim ()))
.Select (x => new { ID = x. ID, Code = x. Code, QualificationCode = x. QUALIFICATIONCODE, Name = x.Name, Period = (x.Period ?? «»).Trim () }).ToArray ();
return new AjaxResultModel { Data = avail };
}
/// Π‘ΠΏΠΈΡΠΎΠΊ Π½Π°ΠΏΡΠ²Π°Π»Π΅Π½ΠΈΠΉ ΠΎΡΡΠ°ΠΆΡΠ½Π½ΡΡ Π² Π·Π°ΡΠ²ΠΊΠ΅ Π½Π° udalenie
public static AjaxResultModel GetRequestedToDeleteDirections (this InstitutionsEntities dbContext, int institutionID)
{
List temp1;
temp1 = dbContext.RequestDirection.Where (y => y. Activity == «W» && y. Request_ID == institutionID && y. Action == «Delete»).Select (n => n. Direction_ID).ToList ();
List temp2 = new List ();
foreach (int intro in temp1)
{
temp2.Add (Convert.ToInt32(intro));
}
var avail =
dbContext.Direction.Where (x => x. DirectionID > 0 && temp2. Contains (x.DirectionID))
.OrderBy (x => x. Code)
.Select (x => new { ID = x. DirectionID, Code = x. Code, Name = x.Name, Period = x. PERIOD, x. QUALIFICATIONCODE }).ToArray ()
//.Where (x => qualCodes. Contains ((x.QUALIFICATIONCODE ?? «»).Trim ()))
.Select (x => new { ID = x. ID, Code = x. Code, QualificationCode = x. QUALIFICATIONCODE, Name = x.Name, Period = (x.Period ?? «»).Trim () }).ToArray ();
return new AjaxResultModel { Data = avail };
}
public static AjaxResultModel GetDeniedDirections (this InstitutionsEntities dbContext, int institutionID)
{
List temp1;
temp1 = dbContext.RequestDirection.Where (y => y. Activity == «D» && y. Request_ID == institutionID).Select (n => n. Direction_ID).ToList ();
List temp2 = new List ();
foreach (int intro in temp1)
{
temp2.Add (Convert.ToInt32(intro));
}
var avail =
dbContext.Direction.Where (x => x. DirectionID > 0 && temp2. Contains (x.DirectionID))
.OrderBy (x => x. Code)
.Select (x => new { ID = x. DirectionID, Code = x. Code, Name = x.Name, Period = x. PERIOD, x. QUALIFICATIONCODE }).ToArray ()
//.Where (x => qualCodes. Contains ((x.QUALIFICATIONCODE ?? «»).Trim ()))
.Select (x => new { ID = x. ID, Code = x. Code, QualificationCode = x. QUALIFICATIONCODE, Name = x.Name, Period = (x.Period ?? «»).Trim () }).ToArray ();
var query1 = dbContext. RequestComments
Where (x => temp1. Contains (x.RequestDirection.Direction_ID)
&& x. InstitutionID == institutionID
&& x. Commentor == «A»)
.OrderByDescending (x => x. Date);
List rlist = new List ();
foreach (RequestComments rq in query1)
{
if (!rlist.Select (x => x. DirectionID).Contains (rq.DirectionID))
{
rlist.Add (rq);
}
}
var comment = rlist
.Select (x => new { ID = x. DirectionID, Comment = x. Comment });
return new AjaxResultModel { Data = new { Direction = avail, Comment = comment } };
}
/// Π£Π΄Π°Π»ΡΠ΅ΠΌ ΠΎΡΠΊΠ»ΠΎΠ½ΡΠ½Π½ΡΠ΅ Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ Π² Π·Π°ΡΠ²ΠΊΠ΅
public static AjaxResultModel DeleteDenied (this InstitutionsEntities dbContext, int instid)
{
var db = dbContext.RequestDirection.Where (x => x. Request_ID == instid && x. Activity == «D»);
foreach (RequestDirection rd in db)
{
dbContext.RequestDirection.DeleteObject (rd);
}
dbContext.SaveChanges ();
return new AjaxResultModel ();
}
/// ΠΠΎΠ±Π°Π²Π»ΡΠ΅ΠΌ Π½ΠΎΠ²ΠΎΠ΅ ΡΠ°Π·ΡΠ΅ΡΡΠ½Π½ΠΎΠ΅ Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π² Π±Π°Π·Ρ
public static AjaxResultModel AddAllowedDirection (this EntrantsEntities dbContext, AllowedDirectionAddViewModel model, int institutionID)
{
//ΠΏΡΠΈΡΠ»ΠΈ ΠΎΡΠΈΠ±ΠΎΡΠ½ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅, Π½ΠΈΡΠ΅Π³ΠΎ Π½Π΅ Π΄Π΅Π»Π°Π΅ΠΌ. Π‘ΠΈΡΡΠ°ΡΠΈΡ Π² Π½ΠΎΡΠΌΠ°Π»ΡΠ½ΠΎΠΉ ΠΆΠΈΠ·Π½ΠΈ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Π° Π±ΡΡΡ
if (!dbContext.AdmissionItemType.Any (x => x. ItemTypeID == model. EducationLevelID && x. ItemLevel == 2))
return new AjaxResultModel ();
foreach (var directionID in (model.DirectionIDs ?? new int[0]))
{
// Π΅ΡΠ»ΠΈ Π½Π΅Ρ Π΅ΡΡ, ΡΠΎ Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅ΠΌ
if (!dbContext.AllowedDirections.Any (x => x. DirectionID == directionID && x. AdmissionItemTypeID == model. EducationLevelID && x. InstitutionID == institutionID))
{
AllowedDirections ad = new AllowedDirections ();
ad.InstitutionID = institutionID;
ad.AdmissionItemTypeID = (short)model.EducationLevelID;
ad.DirectionID = directionID;
dbContext.AllowedDirections.AddObject (ad);
}
dbContext.SaveChanges ();
}
return new AjaxResultModel ();
}
/// Π£Π΄Π°Π»ΡΠ΅ΠΌ ΡΠ°Π·ΡΠ΅ΡΡΠ½Π½ΠΎΠ΅ Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΈΠ· Π±Π°Π·Ρ. ΠΡΠΎΠ²Π΅ΡΡΠΌ ΡΡΠΎ ΡΡΠΎ Π΄ΠΎΠΏΡΡΡΠΈΠΌΠΎ.
public static AjaxResultModel DeleteAllowedDirection (this EntrantsEntities dbContext, int educationLevelID, int directionID, int institutionID)
{
//ΠΏΡΠΈΡΠ»ΠΈ ΠΎΡΠΈΠ±ΠΎΡΠ½ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅, Π½ΠΈΡΠ΅Π³ΠΎ Π½Π΅ Π΄Π΅Π»Π°Π΅ΠΌ. Π‘ΠΈΡΡΠ°ΡΠΈΡ Π² Π½ΠΎΡΠΌΠ°Π»ΡΠ½ΠΎΠΉ ΠΆΠΈΠ·Π½ΠΈ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Π° Π±ΡΡΡ
if (!dbContext.AdmissionItemType.Any (x => x. ItemTypeID == educationLevelID && x. ItemLevel == 2))
return new AjaxResultModel ();
if (dbContext.CompetitiveGroupItem.Any (x => x.CompetitiveGroup.InstitutionID == institutionID && x. DirectionID == directionID
&& x. EducationLevelID == educationLevelID))
return new AjaxResultModel («ΠΠ΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π°Π»ΠΈΡΡ Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅, ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΠΎΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π² ΠΊΠΎΠ½ΠΊΡΡΡΠ½ΡΡ Π³ΡΡΠΏΠΏΠ°Ρ .»);
var ad = dbContext.AllowedDirections.FirstOrDefault (x => x. DirectionID == directionID && x. AdmissionItemTypeID == educationLevelID && x. InstitutionID == institutionID);
if (ad ≠ null)
{
// Π΄ΠΎ ΠΊΡΡΠΈ ΡΠ΄Π°Π»ΡΠ΅ΠΌ ΠΎΠ±ΡΡΠΌ ΠΏΡΠΈΡΠΌΠ°, ΠΎΠ½ ΡΠΆΠ΅ Π±ΠΎΠ»ΡΡΠ΅ Π½Π΅ Π½ΡΠΆΠ΅Π½ (ΠΠ ΠΏΡΠΎΠ²Π΅ΡΠΈΠ»ΠΈ, Π½Π΅Ρ)
dbContext.AdmissionVolume
.Where (x => x. DirectionID == directionID && x. InstitutionID == institutionID && x. AdmissionItemTypeID == educationLevelID)
.ToList ().ForEach (dbContext.AdmissionVolume.DeleteObject);
dbContext.AllowedDirections.DeleteObject (ad);
dbContext.SaveChanges ();
}
return new AjaxResultModel ();
}
public static bool IsInCompetitiveGroup (this EntrantsEntities dbContext, int institution, int direction, int admtype)
{
return (dbContext.CompetitiveGroupItem.Any (x => x.CompetitiveGroup.InstitutionID == institution && x. DirectionID == direction && x. EducationLevelID == (short)admtype))
;
}
ΠΠΎΠ½ΡΡΠΎΠ»Π»ΡΡΡ — Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΎΡ Π€ΠΠ‘:
[Authorize (Roles = UserRole. FBDAdmin)]
public ActionResult ReqList ()
{
using (InstitutionsEntities dbContext = new InstitutionsEntities ())
{
return View («./Admission/RequestList», dbContext. InitialFillRequestListViewModel (InstitutionID));
}
}
[Authorize]
[HttpPost]
public AjaxResultModel MakeEditable (int? institutionid)
{
if (institutionid == null)
return new AjaxResultModel («Invalid value of Institution ID.»);
using (InstitutionsEntities dbContext = new InstitutionsEntities ())
{
return dbContext. AtoU (institutionid ?? 0);
}
}
[Authorize (Roles = UserRole. FBDAdmin)]
[HttpPost]
public AjaxResultModel GetRequestList (RequestListViewModel model)
{
using (var dbContext = new InstitutionsEntities ())
{
return dbContext. GetRequestList (model);
}
}
[Authorize (Roles = UserRole. FBDAdmin)]
[HttpPost]
public AjaxResultModel GetRequest (int? institutionid)
{
using (var dbContext = new InstitutionsEntities ())
{
return dbContext. FillRequestList (institutionid ?? 0);
}
}
[Authorize (Roles = UserRole. FBDAdmin)]
[HttpPost]
public AjaxResultModel AddDirection (int? did, int? inid, int? adtype)
{
using (var dbContext = new InstitutionsEntities ())
{
return dbContext. AcceptRequest (did ?? 0, inid ?? 0, adtype ?? 0);
}
}
[Authorize (Roles = UserRole. FBDAdmin)]
[HttpPost]
public AjaxResultModel DenyRequest (int? did, string comment, int? inid)
{
using (var dbContext = new InstitutionsEntities ())
{
return dbContext. DenyRequestAdmin (did ?? 0, inid ?? 0, comment);
}
}
public ActionResult Index ()
{
return View ();
}
Π€ΡΠ½ΠΊΡΠΈΠΈ ΠΈΠ· ΡΠ°ΠΉΠ»ΠΎΠ² ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΡ:
public static RequestListViewModel InitialFillRequestListViewModel (this InstitutionsEntities dbContext, int currentInstitutionID)
{
RequestListViewModel model = new RequestListViewModel ();
model.CurrentInstitutionID = currentInstitutionID;
return model;
}
public static AjaxResultModel FillRequestList (this InstitutionsEntities dbContext, int InstID)
{
var query = dbContext.RequestDirection.Where (x => x. Request_ID == InstID && x. Activity == «W»).Select (x => x. Direction_ID);
var current = dbContext.Direction.Where (x => query. Contains (x.DirectionID)).OrderBy (x => x. DirectionID)
.Select (x => new { ID = x. DirectionID, Code = x. Code, Name = x.Name, Period = x. PERIOD, x. QUALIFICATIONCODE}).ToArray ()
.Select (x => new { ID = x. ID, Code = x. Code, QualificationCode = x. QUALIFICATIONCODE, Name = x.Name, Period = (x.Period ?? «»).Trim () }).ToArray ();;
var query1 = dbContext.RequestComments.Include (x => x. RequestDirection).Where (x => x. InstitutionID == InstID && x. Commentor == «U»).OrderByDescending (x => x. Date);
List rlist = new List ();
foreach (RequestComments rq in query1)
{
if (!rlist.Select (x => x. DirectionID).Contains (rq.DirectionID))
{
rlist.Add (rq);
}
}
foreach (RequestDirection rd in dbContext.RequestDirection.Where (x => x. Request_ID == InstID && x. Activity == «W»))
{
rd.Activity = «A» ;
}
dbContext.SaveChanges ();
RequestThread rt = new RequestThread (InstID);
return new AjaxResultModel { Data = new { Request = current, Comment = rlist. OrderBy (x => x. DirectionID).Select (x => new { DirectionID = x. DirectionID, Comment = x. Comment, Action = x.RequestDirection.Action, admissionType = x.RequestDirection.AdmissionItemType}) } };
}
public static AjaxResultModel GetInstitutionList (this InstitutionsEntities dbContext, InstitutionListViewModel model)
{
var query = dbContext. Institution
.Include (x => x. RegionType)
.Include (x => x. FormOfLaw)
.Include (x => x. UserPolicy);
//sorting
if ((model.SortID ?? 0) == 0)
model.SortID = 1;
if (model.SortID == 1) query = query. OrderBy (x => x. FullName);
if (model.SortID == -1) query = query. OrderByDescending (x => x. FullName);
if (model.SortID == 2) query = query. OrderBy (x => x. InstitutionTypeID);
if (model.SortID == -2) query = query. OrderByDescending (x => x. InstitutionTypeID);
if (model.SortID == 3) query = query. OrderBy (x => x.RegionType.Name);
if (model.SortID == -3) query = query. OrderByDescending (x => x.RegionType.Name);
if (model.SortID == 4) query = query. OrderBy (x => x. OwnerDepartment);
if (model.SortID == -4) query = query. OrderByDescending (x => x. OwnerDepartment);
if (model.SortID == 5) query = query. OrderBy (x => x.UserPolicy.Count ());
if (model.SortID == -5) query = query. OrderByDescending (x => x.UserPolicy.Count ());
model.TotalItemCount = query. Count ();
if (model.Filter ≠ null)
{
if (!String.IsNullOrEmpty (model.Filter.ShortName))
query = query. Where (x => x.BriefName.Contains (model.Filter.ShortName));
if (!String.IsNullOrEmpty (model.Filter.FullName))
query = query. Where (x => x.FullName.Contains (model.Filter.FullName));
if (!String.IsNullOrEmpty (model.Filter.Owner))
query = query. Where (x => x.OwnerDepartment.Contains (model.Filter.Owner));
if (model.Filter.InstitutionTypeID > 0)
query = query. Where (x => x. InstitutionTypeID == model.Filter.InstitutionTypeID);
if (model.Filter.FormOfLawID > 0)
query = query. Where (x => x. FormOfLawID == model.Filter.FormOfLawID);
if (model.Filter.RegionID > 0)
query = query. Where (x => x. RegionID == model.Filter.RegionID);
if (!String.IsNullOrEmpty (model.Filter.OGRN))
query = query. Where (x => x. OGRN == model.Filter.OGRN);
if (!String.IsNullOrEmpty (model.Filter.INN))
query = query. Where (x => x. OGRN == model.Filter.INN);
}
var pageNumber = model. PageNumber;
if (!pageNumber.HasValue || pageNumber < 0) pageNumber = 0;
int totalCount = query. Count ();
model.TotalItemFilteredCount = totalCount;
model.TotalPageCount = ((Math.Max (totalCount, 1) — 1) / InstitutionListPageSize) + 1;
var filtQuery = query
.Skip (pageNumber.Value * InstitutionListPageSize)
.Take (InstitutionListPageSize);
model.Institutions = filtQuery. ToArray ().Select (x => new InstitutionListViewModel. InstitutionData
{
InstitutionID = x. InstitutionID,
ShortName = x. BriefName ?? x. FullName ?? «» ,
FullName = x. FullName ?? «» ,
InstitutionTypeName = x. InstitutionTypeID == 1? «ΠΠ£Π»: (x.InstitutionTypeID == 2? «Π‘Π‘Π£Π»: «»),
FormOfLawName = x. FormOfLaw ≠ null? x.FormOfLaw.Name: «» ,
Owner = x. OwnerDepartment ?? «» ,
RegionName = x. RegionType ≠ null? x.RegionType.Name: «» ,
UserCount = x.UserPolicy.Count ()
}).ToArray ();
return new AjaxResultModel { Data = model };
}
/// ΠΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌ ΠΈΠ½ΡΡΡΠΈΡΡΡΡ ΠΈ ΠΈΡ Π·Π°ΡΠ²ΠΊΠΈ
public static AjaxResultModel GetRequestList (this InstitutionsEntities dbContext, RequestListViewModel model)
{
//var query = from request in dbContext. RequestDirection
// join institute in dbContext. Institution on request. Request_ID equals institute. InstitutionID
// select new { InstId = institute. InstitutionID, /*Date = request. ChangeDate,*/ name = institute. FullName, /*DirId = request. Direction_ID */};
//query = query. Distinct ();
var query2 = dbContext.RequestDirection.Where (x => x. Activity == «W»).Include (x => x. Institution);
List query1 = query2. Select (x => x.Institution.InstitutionID).Distinct ().ToList ();
List queryL = new List ();
foreach (RequestDirection q in query2)
{
if (query1.Contains (q.Request_ID))
{
queryL.Add (q);
query1.Remove (q.Institution.InstitutionID);
}
}
var query = queryL. AsEnumerable ();
//sorting
if ((model.SortID ?? 0) == 0)
model.SortID = 1;
if (model.SortID == 1) query = query. OrderBy (x => x.Institution.FullName);
if (model.SortID == -1) query = query. OrderByDescending (x => x.Institution.FullName);
if (model.SortID == 3) query = query. OrderBy (x => x. ChangeDate);
if (model.SortID == -3) query = query. OrderByDescending (x => x. ChangeDate);
if (model.SortID == 2) query = query. OrderBy (x => dbContext.RequestDirection.Where (z => z.Institution.InstitutionID == x. Request_ID && z. Activity == «W»).Count ());
if (model.SortID == -2) query = query. OrderByDescending (x => dbContext.RequestDirection.Where (z => z.Institution.InstitutionID == x. Request_ID && z. Activity == «W»).Count ());
model.TotalItemCount = query. Count ();
/*
if (model.Filter ≠ null)
{
if (!String.IsNullOrEmpty (model.Filter.ShortName))
query = query. Where (x => x.BriefName.Contains (model.Filter.ShortName));
if (!String.IsNullOrEmpty (model.Filter.FullName))
query = query. Where (x => x.FullName.Contains (model.Filter.FullName));
if (!String.IsNullOrEmpty (model.Filter.Owner))
query = query. Where (x => x.OwnerDepartment.Contains (model.Filter.Owner));
if (model.Filter.InstitutionTypeID > 0)
query = query. Where (x => x. InstitutionTypeID == model.Filter.InstitutionTypeID);
if (model.Filter.FormOfLawID > 0)
query = query. Where (x => x. FormOfLawID == model.Filter.FormOfLawID);
if (model.Filter.RegionID > 0)
query = query. Where (x => x. RegionID == model.Filter.RegionID);
if (!String.IsNullOrEmpty (model.Filter.OGRN))
query = query. Where (x => x. OGRN == model.Filter.OGRN);
if (!String.IsNullOrEmpty (model.Filter.INN))
query = query. Where (x => x. OGRN == model.Filter.INN);
}
*/
var pageNumber = model. PageNumber;
if (!pageNumber.HasValue || pageNumber < 0) pageNumber = 0;
int totalCount = query. Count ();
model.TotalItemFilteredCount = totalCount;
model.TotalPageCount = ((Math.Max (totalCount, 1) — 1) / InstitutionListPageSize) + 1;
var filtQuery = query
.Skip (pageNumber.Value * InstitutionListPageSize)
.Take (InstitutionListPageSize);
model.Institutions = filtQuery. ToArray ().Select (x => new RequestListViewModel. InstitutionData
{
InstitutionID = x. Request_ID,
FullName = x.Institution.FullName,
RequestNumber = dbContext.RequestDirection.Where (z => z.Institution.InstitutionID == x. Request_ID && z. Activity == «W»).Count (),
Date = x.ChangeDate.ToString ()
}).ToArray ();
return new AjaxResultModel { Data = model };
}
public static AjaxResultModel DenyRequestAdmin (this InstitutionsEntities dbContext, int DirectionID, int InstitutionID, string Comment)
{
if (DirectionID * InstitutionID == 0) return new AjaxResultModel («Data sending error. Try again later.»);
RequestDirection rq = dbContext.RequestDirection.Where (x => x. Direction_ID == DirectionID && x. Request_ID == InstitutionID).Single ();
rq.Activity = «D» ;
RequestComments rc = Model.Institutions.RequestComments.CreateRequestComments (dbContext.RequestComments.Count () + 1, «A», DirectionID, InstitutionID);
rc.Comment = Comment;
dbContext.AddToRequestComments (rc);
dbContext.SaveChanges ();
return new AjaxResultModel ();
}
public static AjaxResultModel AcceptRequest (this InstitutionsEntities dbContext, int DirID, int InstId, int adType)
{
RequestDirection rd = dbContext.RequestDirection.Where (x => x. Direction_ID == DirID && x. Request_ID == InstId && x. AdmissionItemType == adType).Single ();
using (EntrantsEntities dbContextE = new EntrantsEntities ())
{
if (rd.Action == «Add»)
{
GVUZ.Model.Entrants.AllowedDirections ad = new GVUZ.Model.Entrants.AllowedDirections ();
ad.InstitutionID = InstId;
ad.AdmissionItemTypeID = (short)adType;
ad.DirectionID = DirID;
dbContextE.AllowedDirections.AddObject (ad);
}
if (rd.Action == «Delete»)
{
GVUZ.Model.Entrants.AllowedDirections ad = dbContextE.AllowedDirections.Where (x =>
x.InstitutionID == InstId &&
x.AdmissionItemTypeID == (short)adType &&
x.DirectionID == DirID).First ();
dbContextE.AllowedDirections.DeleteObject (ad);
}
dbContextE.SaveChanges ();
}
dbContext.RequestDirection.DeleteObject (rd);
dbContext.SaveChanges ();
return new AjaxResultModel ();
}
public static AjaxResultModel AtoU (this InstitutionsEntities dbContext, int instid)
{
foreach (RequestDirection rd in dbContext.RequestDirection.Where (x => x. Activity == «A» && x. Request_ID == instid))
{
rd.Activity = «W» ;
}
dbContext.SaveChanges ();
return new AjaxResultModel ();
}
class RequestThread
{
System.Threading.Thread thread;
InstitutionsEntities dbContext;
public RequestThread (int instID)
{
thread = new System.Threading.Thread (this.func);
thread.Start (instID);
dbContext = new InstitutionsEntities ();
}
void func (object instID)
{
int id = Convert. ToInt32(instID);
System.Threading.Thread.Sleep (900 000);
foreach (RequestDirection rd in dbContext.RequestDirection.Where (x => x. Activity == «A» && x. Request_ID == id))
{
rd.Activity = «W» ;
}
dbContext.SaveChanges ();
}
}