āĻā§āĻŽāĻŋāĻāĻž
Đ āĻāĻŋāĻā§ āĻ
āĻĒā§āĻāĻŋāĻŽāĻžāĻāĻā§āĻļāĻžāύ āĻĒāĻĻā§āϧāϤāĻŋ āĻŦāĻŋāĻŦā§āĻāύāĻž āĻāϰāĻž āĻšāϝāĻŧ LINQ āĻĒā§āϰāĻļā§āύ.
āĻāĻāĻžāύ⧠āĻāĻŽāϰāĻž āĻā§āĻĄ āĻ
āĻĒā§āĻāĻŋāĻŽāĻžāĻāĻā§āĻļāύ āϏāĻŽā§āĻĒāϰā§āĻāĻŋāϤ āĻāϰāĻ āĻāĻŋāĻā§ āĻĒāύā§āĻĨāĻž āĻāĻĒāϏā§āĻĨāĻžāĻĒāύ āĻāϰāĻŋ LINQ āĻĒā§āϰāĻļā§āύ.
āĻāĻāĻž āĻāĻžāύāĻž āϝāĻžāϝāĻŧ āϞāĻŋāύāĻā§āĻ(Language-Integrated Query) āĻāĻāĻāĻŋ āϤāĻĨā§āϝ āĻā§āϏ āĻ
āύā§āϏāύā§āϧāĻžāύā§āϰ āĻāύā§āϝ āĻāĻāĻāĻŋ āϏāĻšāĻ āĻāĻŦāĻ āϏā§āĻŦāĻŋāϧāĻžāĻāύāĻ āĻāĻžāώāĻžāĨ¤
Đ SQL āĻĨā§āĻā§ LINQ āĻāĻāĻāĻŋ āĻĄāĻŋāĻŦāĻŋāĻāĻŽāĻāϏ⧠āĻĄā§āĻāĻž āĻ ā§āϝāĻžāĻā§āϏā§āϏ āĻāϰāĻžāϰ āĻāύā§āϝ āĻāĻāĻāĻŋ āĻĒā§āϰāϝā§āĻā§āϤāĻŋāĨ¤ āĻāĻāĻŋ āĻĄā§āĻāĻž āύāĻŋāϝāĻŧā§ āĻāĻžāĻ āĻāϰāĻžāϰ āĻāύā§āϝ āĻāĻāĻāĻŋ āĻļāĻā§āϤāĻŋāĻļāĻžāϞ⧠āĻā§āϞ, āϝā§āĻāĻžāύ⧠āĻāĻāĻāĻŋ āĻā§āώāĻŖāĻžāĻŽā§āϞāĻ āĻāĻžāώāĻžāϰ āĻŽāĻžāϧā§āϝāĻŽā§ āĻĒā§āϰāĻļā§āύāĻā§āϞāĻŋ āϤā§āϰāĻŋ āĻāϰāĻž āĻšāϝāĻŧ, āϝāĻž āĻĒāϰ⧠āϰā§āĻĒāĻžāύā§āϤāϰāĻŋāϤ āĻšāĻŦā§ āĻāϏāĻāĻŋāĻāĻāϞ āĻĒā§āϰāĻļā§āύ āĻĒā§āϞā§āϝāĻžāĻāĻĢāϰā§āĻŽ āĻāĻŦāĻ āĻāĻā§āϏāĻŋāĻāĻŋāĻāĻļāύā§āϰ āĻāύā§āϝ āĻĄāĻžāĻāĻžāĻŦā§āϏ āϏāĻžāϰā§āĻāĻžāϰ⧠āĻĒāĻžāĻ āĻžāύ⧠āĻšāϝāĻŧā§āĻā§āĨ¤ āĻāĻŽāĻžāĻĻā§āϰ āĻā§āώā§āϤā§āϰā§, DBMS āĻĻā§āĻŦāĻžāϰāĻž āĻāĻŽāϰāĻž āĻŦā§āĻāĻžāϝāĻŧ āĻāĻŽāĻāϏ āĻāϏāĻāĻŋāĻāĻāϞ āϏāĻžāϰā§āĻāĻžāϰ.
āϝāĻžāĻāĻšā§āĻ, LINQ āĻĒā§āϰāĻļā§āύ āϏāϰā§āĻŦā§āϤā§āϤāĻŽ āϞāĻŋāĻāĻŋāϤ āĻŦā§āĻļā§ āϰā§āĻĒāĻžāύā§āϤāϰāĻŋāϤ āĻšāϝāĻŧ āύāĻž āĻāϏāĻāĻŋāĻāĻāϞ āĻĒā§āϰāĻļā§āύ, āϝāĻž āĻāĻāĻāύ āĻ āĻāĻŋāĻā§āĻ DBA āĻ āĻĒā§āĻāĻŋāĻŽāĻžāĻāĻā§āĻļāĻžāύā§āϰ āϏāĻŽāϏā§āϤ āϏā§āĻā§āώā§āĻŽāϤāĻž āϏāĻš āϞāĻŋāĻāϤ⧠āĻĒāĻžāϰā§ā§ˇ āĻāϏāĻāĻŋāĻāĻāϞ āĻĒā§āϰāĻļā§āύ:
- āϏāϰā§āĻŦā§āϤā§āϤāĻŽ āϏāĻāϝā§āĻ (JOIN) āĻāĻŦāĻ āĻĢāϞāĻžāĻĢāϞ āĻĢāĻŋāϞā§āĻāĻžāϰāĻŋāĻ (āĻā§āĻĨāĻžāϝāĻŧ)
- āϏāĻāϝā§āĻ āĻāĻŦāĻ āĻā§āϰā§āĻĒ āĻļāϰā§āϤāĻžāĻŦāϞ⧠āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāĻžāϰ āĻ āύā§āĻ āϏā§āĻā§āώā§āĻŽāϤāĻž
- āĻļāϰā§āϤ āĻĒā§āϰāϤāĻŋāϏā§āĻĨāĻžāĻĒāύ āĻ āύā§āĻ āĻŦā§āĻāĻŋāϤā§āϰ IN āĻāĻĒāϰ āĻāĻĒāϏā§āĻĨāĻŋāĻ¤Đ¸ āύāĻž, <> āĻāĻžāϞ⧠āĻāĻĒāϏā§āĻĨāĻŋāϤ
- āĻ āϏā§āĻĨāĻžāϝāĻŧā§ āĻā§āĻŦāĻŋāϞ, CTE, āĻā§āĻŦāĻŋāϞ āĻā§āϰāĻŋāϝāĻŧā§āĻŦāϞā§āϰ āĻŽāĻžāϧā§āϝāĻŽā§ āĻĢāϞāĻžāĻĢāϞā§āϰ āĻŽāϧā§āϝāĻŦāϰā§āϤ⧠āĻā§āϝāĻžāĻļāĻŋāĻ
- āĻŦāĻžāĻā§āϝā§āϰ āĻŦā§āϝāĻŦāĻšāĻžāϰ (āĻ āύā§āϝāĻžāϝāĻŧā§ OPTION) āύāĻŋāϰā§āĻĻā§āĻļāĻžāĻŦāϞ⧠āĻāĻŦāĻ āĻā§āĻŦāĻŋāϞ āĻāĻā§āĻāĻŋāϤ āϏāĻš āϏāĻā§āĻā§ (...)
- āύāĻŋāϰā§āĻŦāĻžāĻāύā§āϰ āϏāĻŽāϝāĻŧ āĻ āĻĒā§āϰāϝāĻŧā§āĻāύā§āϝāĻŧ āĻĄā§āĻāĻž āϰāĻŋāĻĄāĻŋāĻ āĻĨā§āĻā§ āĻĒāϰāĻŋāϤā§āϰāĻžāĻŖ āĻĒāĻžāĻāϝāĻŧāĻžāϰ āĻ āύā§āϝāϤāĻŽ āĻāĻĒāĻžāϝāĻŧ āĻšāĻŋāϏāĻžāĻŦā§ āϏā§āĻā§āĻā§āϤ āĻāĻŋāĻ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāĻž
āĻĢāϞ⧠āĻĒā§āϰāϧāĻžāύ āĻāϰā§āĻŽāĻā§āώāĻŽāϤāĻž āĻŦāĻžāϧāĻž āĻāϏāĻāĻŋāĻāĻāϞ āĻĒā§āϰāĻļā§āύ āĻāĻŽā§āĻĒāĻžāĻāϞ āĻāϰāĻžāϰ āϏāĻŽāϝāĻŧ LINQ āĻĒā§āϰāĻļā§āύ āĻāĻāĻā§āϞāĻŋ āĻšāϞ:
- āĻāĻāĻāĻŋ āĻ āύā§āϰā§āϧ⧠āϏāĻŽāĻā§āϰ āĻĄā§āĻāĻž āύāĻŋāϰā§āĻŦāĻžāĻāύ āĻĒā§āϰāĻā§āϰāĻŋāϝāĻŧāĻžāϰ āĻāĻāϤā§āϰā§āĻāϰāĻŖ
- āĻā§āĻĄā§āϰ āĻ āύā§āϰā§āĻĒ āĻŦā§āϞāĻā§āϰ āύāĻāϞ, āϝāĻž āĻļā§āώ āĻĒāϰā§āϝāύā§āϤ āĻāĻāĻžāϧāĻŋāĻ āĻ āĻĒā§āϰāϝāĻŧā§āĻāύā§āϝāĻŧ āĻĄā§āĻāĻž āĻĒāĻĄāĻŧāĻžāϰ āĻĻāĻŋāĻā§ āύāĻŋāϝāĻŧā§ āϝāĻžāϝāĻŧ
- āĻŽāĻžāϞā§āĻāĻŋ-āĻāĻŽā§āĻĒā§āύā§āύā§āĻ āĻ āĻŦāϏā§āĻĨāĻžāϰ āĻā§āϰā§āĻĒ (āϝā§āĻā§āϤāĻŋāĻ "āĻāĻŦāĻ" āĻāĻŦāĻ "āĻŦāĻž") - āĻāĻŦāĻ Đ¸ OR, āĻāĻāĻŋāϞ āĻ āĻŦāϏā§āĻĨāĻžāϰ āĻŽāϧā§āϝ⧠āĻāĻāϤā§āϰāĻŋāϤ āĻāϰāĻž, āĻāĻ āϏāϤā§āϝā§āϰ āĻĻāĻŋāĻā§ āĻĒāϰāĻŋāĻāĻžāϞāĻŋāϤ āĻāϰ⧠āϝ⧠āĻ āĻĒā§āĻāĻŋāĻŽāĻžāĻāĻāĻžāϰ, āĻĒā§āϰāϝāĻŧā§āĻāύā§āϝāĻŧ āĻā§āώā§āϤā§āϰā§āϰ āĻāύā§āϝ āĻāĻĒāϝā§āĻā§āϤ āύāύ-āĻā§āϞāĻžāϏā§āĻāĻžāϰāĻĄ āϏā§āĻāĻ āĻĨāĻžāĻāĻž, āĻļā§āώ āĻĒāϰā§āϝāύā§āϤ āĻā§āϞāĻžāϏā§āĻāĻžāϰāϝā§āĻā§āϤ āϏā§āĻāĻā§āϰ āĻŦāĻŋāϰā§āĻĻā§āϧ⧠āϏā§āĻā§āϝāĻžāύ āĻāϰāĻž āĻļā§āϰ⧠āĻāϰ⧠(āĻāύāĻĄā§āĻā§āϏ āϏā§āĻā§āϝāĻžāύ) āĻļāϰā§āϤā§āϰ āĻā§āϰā§āĻĒ āĻĻā§āĻŦāĻžāϰāĻž
- āϏāĻžāĻŦāĻā§āϝāĻŧā§āϰāĻŋāϰ āĻāĻā§āϰ āύā§āϏā§āĻāĻŋāĻ āĻĒāĻžāϰā§āϏāĻŋāĻāĻā§ āĻā§āĻŦ āϏāĻŽāϏā§āϝāĻžāϝā§āĻā§āϤ āĻāϰ⧠āϤā§āϞ⧠āĻāϏāĻāĻŋāĻāĻāϞ āĻŦāĻŋāĻŦā§āϤāĻŋ āĻāĻŦāĻ āĻĄā§āĻā§āϞāĻĒāĻžāϰāĻĻā§āϰ āĻĒāĻā§āώ āĻĨā§āĻā§ āĻā§āϝā§āϝāĻŧāĻžāϰ⧠āĻĒā§āϞā§āϝāĻžāύā§āϰ āĻŦāĻŋāĻļā§āϞā§āώāĻŖ āĻāĻŦāĻ DBA
āĻ āύā§āĻā§āϞāĻāϰāĻŖ āĻĒāĻĻā§āϧāϤāĻŋ
āĻāĻāύ āϏāϰāĻžāϏāϰāĻŋ āĻ āĻĒā§āĻāĻŋāĻŽāĻžāĻāĻā§āĻļāĻžāύ āĻĒāĻĻā§āϧāϤāĻŋāϤ⧠āϝāĻžāĻāϝāĻŧāĻž āϝāĻžāĻāĨ¤
1) āĻ āϤāĻŋāϰāĻŋāĻā§āϤ āĻāύāĻĄā§āĻā§āϏāĻŋāĻ
āĻĒā§āϰāϧāĻžāύ āύāĻŋāϰā§āĻŦāĻžāĻāύ āϏāĻžāϰāĻŖā§āϤ⧠āĻĢāĻŋāϞā§āĻāĻžāϰāĻā§āϞāĻŋ āĻŦāĻŋāĻŦā§āĻāύāĻž āĻāϰāĻž āϏāϰā§āĻŦā§āϤā§āϤāĻŽ, āϝā§āĻšā§āϤ⧠āĻĒā§āϰāĻžāϝāĻŧāĻļāĻ āĻĒā§āϰ⧠āĻā§āϝā§āϝāĻŧāĻžāϰā§āĻāĻŋ āĻāĻ āĻŦāĻž āĻĻā§āĻāĻŋ āĻĒā§āϰāϧāĻžāύ āĻā§āĻŦāĻŋāϞ (āĻ ā§āϝāĻžāĻĒā§āϞāĻŋāĻā§āĻļāύ-āϞā§āĻ-āĻ āĻĒāĻžāϰā§āĻļāύ) āĻāĻŦāĻ āĻļāϰā§āϤāĻā§āϞāĻŋāϰ āĻāĻāĻāĻŋ āĻŽāĻžāύāĻ āϏā§āĻ (IsClosed, Canceled, Enabled, Status) āĻāϰ āĻāĻžāϰāĻĒāĻžāĻļā§ āϤā§āϰāĻŋ āĻāϰāĻž āĻšāϝāĻŧāĨ¤ āĻāĻŋāĻšā§āύāĻŋāϤ āύāĻŽā§āύāĻžāϰ āĻāύā§āϝ āĻāĻĒāϝā§āĻā§āϤ āϏā§āĻāĻ āϤā§āϰāĻŋ āĻāϰāĻž āĻā§āϰā§āϤā§āĻŦāĻĒā§āϰā§āĻŖāĨ¤
āĻāĻ āĻā§āώā§āϤā§āϰāĻā§āϞāĻŋ āύāĻŋāϰā§āĻŦāĻžāĻāύ āĻāϰāĻžāϰ āϏāĻŽāϝāĻŧ āĻāĻ āϏāĻŽāĻžāϧāĻžāύāĻāĻŋ āĻŦā§āϧāĻāĻŽā§āϝ āĻšāϝāĻŧ āϝāĻāύ āĻĒā§āϰāĻļā§āύ⧠āĻĢāĻŋāϰ⧠āĻāϏāĻž āϏā§āĻāĻāĻŋāĻā§ āĻāϞā§āϞā§āĻāϝā§āĻā§āϝāĻāĻžāĻŦā§ āϏā§āĻŽāĻžāĻŦāĻĻā§āϧ āĻāϰā§āĨ¤
āĻāĻĻāĻžāĻšāϰāĻŖāϏā§āĻŦāϰā§āĻĒ, āĻāĻŽāĻžāĻĻā§āϰ 500000 āĻ ā§āϝāĻžāĻĒā§āϞāĻŋāĻā§āĻļāύ āϰāϝāĻŧā§āĻā§āĨ¤ āϝāĻžāĻāĻšā§āĻ, āĻļā§āϧā§āĻŽāĻžāϤā§āϰ 2000 āϏāĻā§āϰāĻŋāϝāĻŧ āĻ ā§āϝāĻžāĻĒā§āϞāĻŋāĻā§āĻļāύ āĻāĻā§āĨ¤ āϤāĻžāϰāĻĒāϰ āĻāĻāĻāĻŋ āϏāĻ āĻŋāĻāĻāĻžāĻŦā§ āύāĻŋāϰā§āĻŦāĻžāĻāĻŋāϤ āϏā§āĻāĻ āĻāĻŽāĻžāĻĻā§āϰ āĻĨā§āĻā§ āϰāĻā§āώāĻž āĻāϰāĻŦā§ āĻāύāĻĄā§āĻā§āϏ āϏā§āĻā§āϝāĻžāύ āĻāĻāĻāĻŋ āĻŦāĻĄāĻŧ āĻā§āĻŦāĻŋāϞ⧠āĻāĻŦāĻ āĻāĻĒāύāĻžāĻā§ āĻāĻāĻāĻŋ āύāύ-āĻā§āϞāĻžāϏā§āĻāĻžāϰāĻĄ āϏā§āĻāĻā§āϰ āĻŽāĻžāϧā§āϝāĻŽā§ āĻĻā§āϰā§āϤ āĻĄā§āĻāĻž āύāĻŋāϰā§āĻŦāĻžāĻāύ āĻāϰāĻžāϰ āĻ āύā§āĻŽāϤāĻŋ āĻĻā§āĻŦā§āĨ¤
āĻāĻāĻžāĻĄāĻŧāĻžāĻ, āĻā§āϝā§āϝāĻŧāĻžāϰ⧠āĻĒā§āϞā§āϝāĻžāύ āĻĒāĻžāϰā§āϏāĻŋāĻ āĻŦāĻž āϏāĻŋāϏā§āĻā§āĻŽ āĻāĻŋāĻ āĻĒāϰāĻŋāϏāĻāĻā§āϝāĻžāύ āϏāĻāĻā§āϰāĻšā§āϰ āĻāύā§āϝ āĻĒā§āϰāĻŽā§āĻĒāĻā§āϰ āĻŽāĻžāϧā§āϝāĻŽā§ āϏā§āĻāĻā§āϰ āĻ āĻāĻžāĻŦ āĻāĻŋāĻšā§āύāĻŋāϤ āĻāϰāĻž āϝā§āϤ⧠āĻĒāĻžāϰ⧠āĻāĻŽāĻāϏ āĻāϏāĻāĻŋāĻāĻāϞ āϏāĻžāϰā§āĻāĻžāϰ:
āϏāĻŽāϏā§āϤ āĻāĻŋāĻ āĻĄā§āĻāĻžāϤ⧠āϏā§āĻĨāĻžāύāĻŋāĻ āϏā§āĻāĻāĻā§āϞāĻŋ āĻŦāĻžāĻĻ āĻĻāĻŋāϝāĻŧā§ āĻ āύā§āĻĒāϏā§āĻĨāĻŋāϤ āϏā§āĻā§āĻā§āϞāĻŋāϰ āϏāĻŽā§āĻĒāϰā§āĻā§ āϤāĻĨā§āϝ āϰāϝāĻŧā§āĻā§ā§ˇ
āϝāĻžāĻāĻšā§āĻ, āϏā§āĻā§ āĻāĻŦāĻ āĻā§āϝāĻžāĻļāĻŋāĻ āĻĒā§āϰāĻžāϝāĻŧāĻļāĻ āĻāĻžāϰāĻžāĻĒāĻāĻžāĻŦā§ āϞā§āĻāĻžāϰ āĻĒāϰāĻŋāĻŖāϤāĻŋāĻā§āϞāĻŋāϰ āĻŦāĻŋāϰā§āĻĻā§āϧ⧠āϞāĻĄāĻŧāĻžāĻ āĻāϰāĻžāϰ āĻĒāĻĻā§āϧāϤāĻŋ LINQ āĻĒā§āϰāĻļā§āύ и āĻāϏāĻāĻŋāĻāĻāϞ āĻĒā§āϰāĻļā§āύ.
āĻā§āĻŦāύā§āϰ āĻāĻ ā§āϰ āĻ āύā§āĻļā§āϞāύ āĻĻā§āĻāĻžāϝāĻŧ, āĻāĻāĻāĻŋ āĻŦā§āϝāĻŦāϏāĻžāϰ āĻāύā§āϝ āύāĻŋāϰā§āĻĻāĻŋāώā§āĻ āϏāĻŽāϝāĻŧāϏā§āĻŽāĻžāϰ āĻŽāϧā§āϝ⧠āĻŦā§āϝāĻŦāϏāĻžāϰ āĻŦā§āĻļāĻŋāώā§āĻā§āϝāĻā§āϞāĻŋ āĻŦāĻžāϏā§āϤāĻŦāĻžāϝāĻŧāύ āĻāϰāĻž āĻĒā§āϰāĻžāϝāĻŧāĻļāĻ āĻā§āϰā§āϤā§āĻŦāĻĒā§āϰā§āĻŖāĨ¤ āĻāĻŦāĻ āϏā§āĻāĻāύā§āϝ, āĻāĻžāϰ⧠āĻ āύā§āϰā§āϧāĻā§āϞāĻŋ āĻĒā§āϰāĻžāϝāĻŧāĻ āĻā§āϝāĻžāĻļāĻŋāĻ āϏāĻš āĻĒāĻāĻā§āĻŽāĻŋāϤ⧠āϏā§āĻĨāĻžāύāĻžāύā§āϤāϰāĻŋāϤ āĻšāϝāĻŧāĨ¤
āĻāĻāĻŋ āĻāĻāĻļāĻŋāĻāĻāĻžāĻŦā§ āύā§āϝāĻžāϝāĻŧāϏāĻā§āĻāϤ, āϝā§āĻšā§āϤ⧠āĻŦā§āϝāĻŦāĻšāĻžāϰāĻāĻžāϰā§āϰ āϏāϰā§āĻŦāĻĻāĻž āϏāϰā§āĻŦāĻļā§āώ āĻĄā§āĻāĻžāϰ āĻĒā§āϰāϝāĻŧā§āĻāύ āĻšāϝāĻŧ āύāĻž āĻāĻŦāĻ āĻŦā§āϝāĻŦāĻšāĻžāϰāĻāĻžāϰā§āϰ āĻāύā§āĻāĻžāϰāĻĢā§āϏā§āϰ āĻĒā§āϰāϤāĻŋāĻā§āϰāĻŋāϝāĻŧāĻžāĻļā§āϞāϤāĻžāϰ āĻāĻāĻāĻŋ āĻā§āϰāĻšāĻŖāϝā§āĻā§āϝ āϏā§āϤāϰ āϰāϝāĻŧā§āĻā§āĨ¤
āĻāĻ āĻĒāĻĻā§āϧāϤāĻŋāĻāĻŋ āĻŦā§āϝāĻŦāϏāĻžāϝāĻŧā§āϰ āĻĒā§āϰāϝāĻŧā§āĻāύāĻā§āϞāĻŋ āϏāĻŽāĻžāϧāĻžāύ āĻāϰāĻžāϰ āĻ āύā§āĻŽāϤāĻŋ āĻĻā§āϝāĻŧ, āϤāĻŦā§ āĻļā§āώ āĻĒāϰā§āϝāύā§āϤ āϏāĻŽāϏā§āϝāĻžāĻā§āϞāĻŋāϰ āϏāĻŽāĻžāϧāĻžāύāĻā§āϞāĻŋāĻā§ āĻŦāĻŋāϞāĻŽā§āĻŦāĻŋāϤ āĻāϰ⧠āϤāĻĨā§āϝ āϏāĻŋāϏā§āĻā§āĻŽā§āϰ āĻāĻžāϰā§āϝāĻāĻžāϰāĻŋāϤāĻž āĻšā§āϰāĻžāϏ āĻāϰā§āĨ¤
āĻāĻāĻž āĻŽāύ⧠āϰāĻžāĻāĻž āĻŽā§āϞā§āϝāĻŦāĻžāύ āϝ⧠āĻĒā§āϰāϝāĻŧā§āĻāύā§āϝāĻŧ āϏā§āĻā§ āĻ āύā§āϏāύā§āϧāĻžāύā§āϰ āĻĒā§āϰāĻā§āϰāĻŋāϝāĻŧāĻžāϰ āĻŽāϧā§āϝ⧠āϝā§āĻ āĻāϰāĻžāϰ āĻāύā§āϝ, āĻĒāϰāĻžāĻŽāϰā§āĻļ āĻāĻŽāĻāϏ āĻāϏāĻāĻŋāĻāĻāϞ āĻ āĻĒā§āĻāĻŋāĻŽāĻžāĻāĻā§āĻļāĻžāύ āĻā§āϞ āĻšāϤ⧠āĻĒāĻžāϰā§, āύāĻŋāĻŽā§āύāϞāĻŋāĻāĻŋāϤ āĻļāϰā§āϤāĻžāĻŦāϞ⧠āϏāĻš:
- āϝāĻĻāĻŋ āĻāϤāĻŋāĻŽāϧā§āϝā§āĻ āĻā§āώā§āϤā§āϰāĻā§āϞāĻŋāϰ āĻāĻāĻāĻŋ āĻ āύā§āϰā§āĻĒ āϏā§āĻ āϏāĻš āϏā§āĻā§ āĻĨāĻžāĻā§
- āϝāĻĻāĻŋ āĻā§āĻŦāĻŋāϞā§āϰ āĻā§āώā§āϤā§āϰāĻā§āϞāĻŋ āĻāύā§āĻĄā§āĻā§āϏāĻŋāĻ āϏā§āĻŽāĻžāĻŦāĻĻā§āϧāϤāĻžāϰ āĻāĻžāϰāĻŖā§ āϏā§āĻāĻŋāϤ āĻāϰāĻž āύāĻž āϝāĻžāϝāĻŧ (āĻāϰ⧠āĻŦāĻŋāϏā§āϤāĻžāϰāĻŋāϤāĻāĻžāĻŦā§ āĻŦāϰā§āĻŖāύāĻž āĻāϰāĻž āĻšāϝāĻŧā§āĻā§) ).
2) āĻŦā§āĻļāĻŋāώā§āĻā§āϝāĻā§āϞāĻŋāĻā§ āĻāĻāĻāĻŋ āύāϤā§āύ āĻŦā§āĻļāĻŋāώā§āĻā§āϝ⧠āĻāĻāϤā§āϰāĻŋāϤ āĻāϰāĻžā§ˇ
āĻāĻāύāĻ āĻāĻāύāĻ āĻāĻāĻāĻŋ āĻā§āĻŦāĻŋāϞ āĻĨā§āĻā§ āĻāĻŋāĻā§ āĻā§āώā§āϤā§āϰ, āϝāĻž āĻļāϰā§āϤāĻā§āϞāĻŋāϰ āĻāĻāĻāĻŋ āĻā§āϰā§āĻĒā§āϰ āĻāĻŋāϤā§āϤāĻŋ āĻšāĻŋāϏāĻžāĻŦā§ āĻāĻžāĻ āĻāϰā§, āĻāĻāĻāĻŋ āύāϤā§āύ āĻā§āώā§āϤā§āϰ āĻĒā§āϰāĻŦāϰā§āϤāύ āĻāϰ⧠āĻĒā§āϰāϤāĻŋāϏā§āĻĨāĻžāĻĒāύ āĻāϰāĻž āϝā§āϤ⧠āĻĒāĻžāϰā§āĨ¤
āĻāĻāĻŋ āϏā§āĻā§āϝāĻžāĻāĻžāϏ āĻā§āώā§āϤā§āϰāĻā§āϞāĻŋāϰ āĻāύā§āϝ āĻŦāĻŋāĻļā§āώāĻāĻžāĻŦā§ āϏāϤā§āϝ, āϝā§āĻā§āϞāĻŋ āϏāĻžāϧāĻžāϰāĻŖāϤ āĻŦāĻŋāĻ āĻŦāĻž āĻĒā§āϰā§āĻŖāϏāĻāĻā§āϝāĻžāϰ āĻšāϝāĻŧāĨ¤
āĻāĻĻāĻžāĻšāϰāĻŖ:
āĻŦāύā§āϧ = 0 āĻāĻŦāĻ āĻŦāĻžāϤāĻŋāϞ = 0 āĻāĻŦāĻ āϏāĻā§āώāĻŽ = 0 āĻĻā§āĻŦāĻžāϰāĻž āĻĒā§āϰāϤāĻŋāϏā§āĻĨāĻžāĻĒāĻŋāϤ āĻšāϝāĻŧ āĻ āĻŦāϏā§āĻĨāĻž = 1.
āĻāĻāĻžāύā§āĻ āĻĒā§āϰā§āĻŖāϏāĻāĻā§āϝāĻž āϏā§āĻĨāĻŋāϤāĻŋ āĻŦā§āĻļāĻŋāώā§āĻā§āϝāĻāĻŋ āĻāĻžāϞ⧠āĻāϰāĻž āĻšāϝāĻŧā§āĻā§ āϝāĻžāϤ⧠āύāĻŋāĻļā§āĻāĻŋāϤ āĻāϰāĻž āĻšāϝāĻŧ āϝ⧠āĻāĻ āϏā§āĻā§āϝāĻžāĻāĻžāϏāĻā§āϞāĻŋ āϏāĻžāϰāĻŖāĻŋāϤ⧠āϰāϝāĻŧā§āĻā§āĨ¤ āĻĒāϰāĻŦāϰā§āϤā§, āĻāĻ āύāϤā§āύ āĻŦā§āĻļāĻŋāώā§āĻā§āϝ āϏā§āĻāĻŋāϤ āĻāϰāĻž āĻšāϝāĻŧ.
āĻāĻāĻŋ āĻāϰā§āĻŽāĻā§āώāĻŽāϤāĻž āϏāĻŽāϏā§āϝāĻžāϰ āĻāĻāĻāĻŋ āĻŽā§āϞāĻŋāĻ āϏāĻŽāĻžāϧāĻžāύ, āĻāĻžāϰāĻŖ āĻāĻŽāϰāĻž āĻ āĻĒā§āϰāϝāĻŧā§āĻāύā§āϝāĻŧ āĻāĻŖāύāĻž āĻāĻžāĻĄāĻŧāĻžāĻ āĻĄā§āĻāĻž āĻ ā§āϝāĻžāĻā§āϏā§āϏ āĻāϰāĻŋāĨ¤
3) āĻĻā§āĻļā§āϝā§āϰ āĻŦāϏā§āϤā§āĻāϤā§āĻāϰāĻŖ
āĻĻā§āϰā§āĻāĻžāĻā§āϝāĻŦāĻļāϤ LINQ āĻĒā§āϰāĻļā§āύ āĻ āϏā§āĻĨāĻžāϝāĻŧā§ āĻā§āĻŦāĻŋāϞ, CTE, āĻāĻŦāĻ āĻā§āĻŦāĻŋāϞ āĻā§āϰāĻŋāϝāĻŧā§āĻŦāϞ āϏāϰāĻžāϏāϰāĻŋ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāĻž āϝāĻžāĻŦā§ āύāĻžāĨ¤
āϝāĻžāĻāĻšā§āĻ, āĻāĻ āĻā§āώā§āϤā§āϰ⧠āĻ āĻĒā§āĻāĻŋāĻŽāĻžāĻāĻ āĻāϰāĻžāϰ āĻāϰā§āĻāĻāĻŋ āĻāĻĒāĻžāϝāĻŧ āĻāĻā§ - āϏā§āĻā§āĻā§āϤ āĻāĻŋāĻāĨ¤
āĻļāϰā§āϤ āĻā§āϰā§āĻĒ (āĻāĻĒāϰā§āϰ āĻāĻĻāĻžāĻšāϰāĻŖ āĻĨā§āĻā§) āĻŦāύā§āϧ = 0 āĻāĻŦāĻ āĻŦāĻžāϤāĻŋāϞ = 0 āĻāĻŦāĻ āϏāĻā§āώāĻŽ = 0 (āĻ āĻĨāĻŦāĻž āĻ āύā§āϝāĻžāύā§āϝ āĻ āύā§āϰā§āĻĒ āĻ āĻŦāϏā§āĻĨāĻžāϰ āĻāĻāĻāĻŋ āϏā§āĻ) āĻāĻāĻāĻŋ āĻŦāĻĄāĻŧ āϏā§āĻ āĻĨā§āĻā§ āĻĄā§āĻāĻžāϰ āĻāĻāĻāĻŋ āĻā§āĻ āϏā§āϞāĻžāĻāϏ āĻā§āϝāĻžāĻļ āĻāϰā§, āĻāĻāĻāĻŋ āϏā§āĻā§āĻā§āϤ āĻĻā§āĻļā§āϝ⧠āϏā§āĻā§āϞāĻŋ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāĻžāϰ āĻāύā§āϝ āĻāĻāĻāĻŋ āĻāĻžāϞ āĻŦāĻŋāĻāϞā§āĻĒ āĻšāϝāĻŧā§ āĻāĻ ā§āĨ¤
āĻāĻŋāύā§āϤ⧠āĻāĻāĻāĻŋ āĻĻā§āĻļā§āϝ āĻŦāĻžāϏā§āϤāĻŦāĻžāϝāĻŧāĻŋāϤ āĻāϰāĻžāϰ āϏāĻŽāϝāĻŧ āĻŦā§āĻļ āĻāĻŋāĻā§ āĻŦāĻŋāϧāĻŋāύāĻŋāώā§āϧ āϰāϝāĻŧā§āĻā§:
- subqueries āĻŦā§āϝāĻŦāĻšāĻžāϰ, āϧāĻžāϰāĻž āĻāĻĒāϏā§āĻĨāĻŋāϤ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰ⧠āĻĒā§āϰāϤāĻŋāϏā§āĻĨāĻžāĻĒāύ āĻāϰāĻž āĻāĻāĻŋāϤ JOIN
- āĻāĻĒāύāĻŋ āĻŦāĻžāĻā§āϝ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāϤ⧠āĻĒāĻžāϰāĻŦā§āύ āύāĻž āĻŽāĻŋāϞāύ, āĻāĻāύāĻŋāϝāĻŧāύ āϏāĻŦ, āĻāĻžāĻĄāĻŧ, āĻāύā§āĻāĻžāϰāϏā§āϝāĻžāĻā§āĻ
- āĻāĻĒāύāĻŋ āĻā§āĻŦāĻŋāϞ āĻāĻā§āĻāĻŋāϤ āĻāĻŦāĻ āϧāĻžāϰāĻž āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāϤ⧠āĻĒāĻžāϰāĻŦā§āύ āύāĻž āĻ āύā§āϝāĻžāϝāĻŧā§ OPTION
- āĻāĻā§āϰā§āϰ āϏāĻžāĻĨā§ āĻāĻžāĻ āĻāϰāĻžāϰ āĻā§āύ āϏāĻŽā§āĻāĻžāĻŦāύāĻž āύā§āĻ
- āĻŦāĻŋāĻāĻŋāύā§āύ āĻā§āĻŦāĻŋāϞ āĻĨā§āĻā§ āĻāĻ āĻāĻŋāĻāϤ⧠āĻĄā§āĻāĻž āĻĒā§āϰāĻĻāϰā§āĻļāύ āĻāϰāĻž āĻ āϏāĻŽā§āĻāĻŦ
āĻāĻāĻž āĻŽāύ⧠āϰāĻžāĻāĻž āĻā§āϰā§āϤā§āĻŦāĻĒā§āϰā§āĻŖ āϝ⧠āĻāĻāĻāĻŋ āϏā§āĻā§āĻā§āϤ āĻĻā§āĻļā§āϝ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāĻžāϰ āĻĒā§āϰāĻā§āϤ āϏā§āĻŦāĻŋāϧāĻž āĻļā§āϧā§āĻŽāĻžāϤā§āϰ āĻĒā§āϰāĻā§āϤāĻĒāĻā§āώ⧠āϏā§āĻā§āĻāϰāĻŖā§āϰ āĻŽāĻžāϧā§āϝāĻŽā§ āĻ āϰā§āĻāύ āĻāϰāĻž āϝā§āϤ⧠āĻĒāĻžāϰā§āĨ¤
āĻāĻŋāύā§āϤ⧠āĻāĻāĻāĻŋ āĻāĻŋāĻ āĻāϞ āĻāϰāĻžāϰ āϏāĻŽāϝāĻŧ, āĻāĻ āϏā§āĻā§āĻā§āϞāĻŋ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāĻž āϝāĻžāĻŦā§ āύāĻž, āĻāĻŦāĻ āϏā§āĻĒāώā§āĻāĻāĻžāĻŦā§ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāĻžāϰ āĻāύā§āϝ, āĻāĻĒāύāĻžāĻā§ āĻ āĻŦāĻļā§āϝāĻ āύāĻŋāϰā§āĻĻāĻŋāώā§āĻ āĻāϰāϤ⧠āĻšāĻŦā§ āϏāĻā§āĻā§ (NOEXPAND).
ā§§ Since āϏāĻžāϞ āĻĨā§āĻā§ LINQ āĻĒā§āϰāĻļā§āύ āĻā§āĻŦāĻŋāϞā§āϰ āĻāĻā§āĻāĻŋāϤāĻā§āϞāĻŋ āϏāĻāĻā§āĻāĻžāϝāĻŧāĻŋāϤ āĻāϰāĻž āĻ āϏāĻŽā§āĻāĻŦ, āϤāĻžāĻ āĻāĻĒāύāĻžāĻā§ āĻāϰā§āĻāĻāĻŋ āĻāĻĒāϏā§āĻĨāĻžāĻĒāύāĻž āϤā§āϰāĻŋ āĻāϰāϤ⧠āĻšāĻŦā§ - āύāĻŋāĻŽā§āύāϞāĻŋāĻāĻŋāϤ āĻĢāϰā§āĻŽā§āϰ āĻāĻāĻāĻŋ "āϰā§āϝāĻžāĻĒāĻžāϰ":
CREATE VIEW ĐĐĐ¯_ĐŋŅĐĩĐ´ŅŅавĐģĐĩĐŊĐ¸Ņ AS SELECT * FROM MAT_VIEW WITH (NOEXPAND);
4) āĻā§āĻŦāĻŋāϞ āĻĢāĻžāĻāĻļāύ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰā§
āĻĒā§āϰāĻžāϝāĻŧāĻ āĻŽāϧā§āϝ⧠LINQ āĻĒā§āϰāĻļā§āύ āϏāĻžāĻŦāĻā§āϝāĻŧā§āϰāĻŋāϰ āĻŦāĻĄāĻŧ āĻŦā§āϞāĻ āĻŦāĻž āĻāĻāĻāĻŋ āĻāĻāĻŋāϞ āĻāĻžāĻ āĻžāĻŽā§āϰ āĻāĻŋāĻ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰ⧠āĻŦā§āϞāĻāĻā§āϞāĻŋ āĻā§āĻŦ āĻāĻāĻŋāϞ āĻāĻŦāĻ āϏāĻžāĻŦāĻ āĻĒā§āĻāĻŋāĻŽāĻžāϞ āĻāĻā§āϏāĻŋāĻāĻŋāĻāĻļāύ āϏā§āĻā§āϰāĻžāĻāĻāĻžāϰā§āϰ āϏāĻžāĻĨā§ āĻāĻāĻāĻŋ āĻā§āĻĄāĻŧāĻžāύā§āϤ āĻĒā§āϰāĻļā§āύ āϤā§āϰāĻŋ āĻāϰā§āĨ¤
āĻŽāϧā§āϝ⧠āĻā§āĻŦāĻŋāϞ āĻĢāĻžāĻāĻļāύ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāĻžāϰ āĻŽā§āϞ āϏā§āĻŦāĻŋāϧāĻž LINQ āĻĒā§āϰāĻļā§āύ:
- āĻā§āώāĻŽāϤāĻž, āĻĻā§āĻļā§āϝā§āϰ āĻā§āώā§āϤā§āϰā§, āĻāĻāĻāĻŋ āĻŦāϏā§āϤ⧠āĻšāĻŋāϏāĻžāĻŦā§ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāĻŦāĻ āύāĻŋāϰā§āĻĻāĻŋāώā§āĻ āĻāϰāĻžāϰ āĻāύā§āϝ, āĻāĻŋāύā§āϤ⧠āĻāĻĒāύāĻŋ āĻāύāĻĒā§āĻ āĻĒāϰāĻžāĻŽāĻŋāϤāĻŋāĻā§āϞāĻŋāϰ āĻāĻāĻāĻŋ āϏā§āĻ āĻĒāĻžāϏ āĻāϰāϤ⧠āĻĒāĻžāϰā§āύ:
āĻĢāĻžāĻāĻļāύ āĻĨā§āĻā§ (@param1, @param2 ...)
āĻĢāϞāϏā§āĻŦāϰā§āĻĒ, āύāĻŽāύā§āϝāĻŧ āĻĄā§āĻāĻž āϏā§āϝāĻžāĻŽā§āĻĒāϞāĻŋāĻ āĻ āϰā§āĻāύ āĻāϰāĻž āϝā§āϤ⧠āĻĒāĻžāϰ⧠- āĻāĻāĻāĻŋ āĻā§āĻŦāĻŋāϞ āĻĢāĻžāĻāĻļāύ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāĻžāϰ āĻā§āώā§āϤā§āϰā§, āĻāĻĒāϰ⧠āĻŦāϰā§āĻŖāĻŋāϤ āϏā§āĻā§āĻā§āϤ āĻĻā§āĻļā§āϝā§āϰ āĻā§āώā§āϤā§āϰ⧠āĻāĻŽāύ āĻā§āύ āĻļāĻā§āϤāĻŋāĻļāĻžāϞ⧠āĻŦāĻŋāϧāĻŋāύāĻŋāώā§āϧ āύā§āĻ:
- āĻā§āĻŦāĻŋāϞ āĻāĻā§āĻāĻŋāϤ:
āĻĻā§āĻŦāĻžāϰāĻž āϞāĻŋāύāĻā§āĻ āĻāĻĒāύāĻŋ āĻā§āύ āϏā§āĻā§ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāĻž āĻāĻāĻŋāϤ āϤāĻž āύāĻŋāϰā§āĻĻāĻŋāώā§āĻ āĻāϰāϤ⧠āĻĒāĻžāϰāĻŦā§āύ āύāĻž āĻāĻŦāĻ āĻ āύā§āϏāύā§āϧāĻžāύ āĻāϰāĻžāϰ āϏāĻŽāϝāĻŧ āĻĄā§āĻāĻž āĻŦāĻŋāĻā§āĻāĻŋāύā§āύāϤāĻž āϏā§āϤāϰ āύāĻŋāϰā§āϧāĻžāϰāĻŖ āĻāϰāϤ⧠āĻĒāĻžāϰāĻŦā§āύ āύāĻžāĨ¤
āĻāĻŋāύā§āϤ⧠āĻĢāĻžāĻāĻļāύ āĻāĻ āĻā§āώāĻŽāϤāĻž āĻāĻā§.
āĻĢāĻžāĻāĻļāύā§āϰ āϏāĻžāĻšāĻžāϝā§āϝā§, āĻāĻĒāύāĻŋ āĻāĻāĻāĻŋ āĻŽā§āĻāĻžāĻŽā§āĻāĻŋ āϧā§āϰā§āĻŦāĻ āĻāĻā§āϏāĻŋāĻāĻŋāĻāĻļāύ āĻā§āϝā§āϝāĻŧāĻžāϰ⧠āĻĒā§āϞā§āϝāĻžāύ āĻ āϰā§āĻāύ āĻāϰāϤ⧠āĻĒāĻžāϰā§āύ, āϝā§āĻāĻžāύ⧠āĻāύāĻĄā§āĻā§āϏ āĻāĻŦāĻ āĻĄā§āĻāĻž āĻāĻāϏā§āϞā§āĻļāύ āϞā§āĻā§āϞāĻā§āϞāĻŋāϰ āϏāĻžāĻĨā§ āĻāĻžāĻ āĻāϰāĻžāϰ āύāĻŋāϝāĻŧāĻŽāĻā§āϞāĻŋ āϏāĻāĻā§āĻāĻžāϝāĻŧāĻŋāϤ āĻāϰāĻž āĻšāϝāĻŧ - āĻĢāĻžāĻāĻļāύ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰā§, āϏā§āĻā§āĻā§āϤ āĻĻā§āĻļā§āϝā§āϰ āϏāĻžāĻĨā§ āϤā§āϞāύāĻž āĻāϰā§, āĻĒā§āϰāĻžāĻĒā§āϤ āĻāϰāĻžāϰ āĻ
āύā§āĻŽāϤāĻŋ āĻĻā§āϝāĻŧ:
- āĻāĻāĻŋāϞ āĻĄā§āĻāĻž āϏā§āϝāĻžāĻŽā§āĻĒāϞāĻŋāĻ āϞāĻāĻŋāĻ (āĻāĻŽāύāĻāĻŋ āϞā§āĻĒ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰā§)
- āĻŦāĻŋāĻāĻŋāύā§āύ āĻā§āĻŦāĻŋāϞ āĻĨā§āĻā§ āĻĄā§āĻāĻž āĻāύāĻž āĻšāĻā§āĻā§
- āĻŦā§āϝāĻŦāĻšāĻžāϰā§āϰ āĻŽāĻŋāϞāύ и āĻāĻĒāϏā§āĻĨāĻŋāϤ
- āĻā§āĻŦāĻŋāϞ āĻāĻā§āĻāĻŋāϤ:
- āĻĒā§āϰāĻĻāĻžāύ āĻ
āύā§āϝāĻžāϝāĻŧā§ OPTION āϝāĻāύ āĻāĻŽāĻžāĻĻā§āϰ āĻāĻāϝā§āĻā§ āύāĻŋāϝāĻŧāύā§āϤā§āϰāĻŖ āĻĒā§āϰāĻĻāĻžāύ āĻāϰāϤ⧠āĻšāϝāĻŧ āϤāĻāύ āĻā§āĻŦ āĻĻāϰāĻāĻžāϰ⧠āĻŦāĻŋāĻāϞā§āĻĒ (MAXDOP N), āĻā§āϝā§āϝāĻŧāĻžāϰ⧠āĻāĻā§āϏāĻŋāĻāĻŋāĻāĻļāύ āĻĒā§āϞā§āϝāĻžāύā§āϰ āĻā§āϰāĻŽāĨ¤ āĻāĻĻāĻžāĻšāϰāĻŖ āϏā§āĻŦāϰā§āĻĒ:
- āĻāĻĒāύāĻŋ āĻā§āϝā§āϝāĻŧāĻžāϰ⧠āĻĒāϰāĻŋāĻāϞā§āĻĒāύāĻžāϰ āĻāĻāĻāĻŋ āĻā§āϰāĻĒā§āϰā§āĻŦāĻ āĻĒā§āύāĻāϏā§āώā§āĻāĻŋ āύāĻŋāϰā§āĻĻāĻŋāώā§āĻ āĻāϰāϤ⧠āĻĒāĻžāϰā§āύ āĻŦāĻŋāĻāϞā§āĻĒ (āĻĒā§āύāĻāĻāĻŽā§āĻĒāĻžāĻāϞ)
- āĻāĻĒāύāĻŋ āĻā§āϝā§āϝāĻŧāĻžāϰā§āϤ⧠āĻāϞā§āϞā§āĻāĻŋāϤ āϝā§āĻāĻĻāĻžāύā§āϰ āĻāĻĻā§āĻļ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāĻžāϰ āĻāύā§āϝ āĻā§āϝā§āϝāĻŧāĻžāϰ⧠āĻĒā§āϞā§āϝāĻžāύāĻā§ āĻŦāĻžāϧā§āϝ āĻāϰāĻŦā§āύ āĻāĻŋāύāĻž āϤāĻž āύāĻŋāϰā§āĻĻāĻŋāώā§āĻ āĻāϰāϤ⧠āĻĒāĻžāϰā§āύ āĻŦāĻŋāĻāϞā§āĻĒ (āĻĢā§āϰā§āϏ āĻ āϰā§āĻĄāĻžāϰ)
āϏāĻŽā§āĻĒāϰā§āĻā§ āĻāϰ⧠āĻŦāĻŋāϏā§āϤāĻžāϰāĻŋāϤ āĻ āύā§āϝāĻžāϝāĻŧā§ OPTION āĻŦāϰā§āĻŖāĻŋāϤ .
- āϏāĻāĻā§āϰā§āĻŖ āĻāĻŦāĻ āϏāĻŦāĻā§āϝāĻŧā§ āĻĒā§āϰāϝāĻŧā§āĻāύā§āϝāĻŧ āĻĄā§āĻāĻž āϏā§āϞāĻžāĻāϏ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰā§:
āĻā§āϝāĻžāĻļā§ āĻŦāĻĄāĻŧ āĻĄā§āĻāĻž āϏā§āĻ āϏāĻāϰāĻā§āώāĻŖ āĻāϰāĻžāϰ āĻā§āύ āĻĒā§āϰāϝāĻŧā§āĻāύ āύā§āĻ (āϝā§āĻŽāύāĻāĻŋ āϏā§āĻā§āĻā§āϤ āĻāĻŋāĻāϝāĻŧā§āϰ āĻā§āώā§āϤā§āϰā§), āϝā§āĻāĻžāύ āĻĨā§āĻā§ āĻāĻĒāύāĻžāĻā§ āĻāĻāύāĻ āĻĒā§āϝāĻžāϰāĻžāĻŽāĻŋāĻāĻžāϰ āĻĻā§āĻŦāĻžāϰāĻž āĻĄā§āĻāĻž āĻĢāĻŋāϞā§āĻāĻžāϰ āĻāϰāϤ⧠āĻšāĻŦā§āĨ¤
āĻāĻĻāĻžāĻšāϰāĻŖāϏā§āĻŦāϰā§āĻĒ, āĻāĻāĻāĻŋ āĻā§āĻŦāĻŋāϞ āĻāĻā§ āϝāĻžāϰ āĻĢāĻŋāϞā§āĻāĻžāϰ āĻā§āĻĨāĻžāϝāĻŧ āϤāĻŋāύāĻāĻŋ āĻā§āώā§āϤā§āϰ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāĻž āĻšāϝāĻŧ (a, b, c).āĻĒā§āϰāĻāϞāĻŋāϤāĻāĻžāĻŦā§, āϏāĻŽāϏā§āϤ āĻ āύā§āϰā§āϧā§āϰ āĻāĻāĻāĻŋ āϧā§āϰā§āĻŦāĻ āĻ āĻŦāϏā§āĻĨāĻž āĻāĻā§ a = 0 āĻāĻŦāĻ b = 0.
āϤāĻŦā§ āĻŽāĻžāĻ ā§āϰ āĻāύā§āϝ āĻ āύā§āϰā§āϧ c āĻāϰ⧠āĻĒāϰāĻŋāĻŦāϰā§āϤāύāĻļā§āϞāĨ¤
āĻļāϰā§āϤ āϝāĻžāĻ a = 0 āĻāĻŦāĻ b = 0 āĻāĻāĻž āϏāϤā§āϝāĻŋāĻ āĻāĻŽāĻžāĻĻā§āϰ āĻĒā§āϰāϝāĻŧā§āĻāύā§āϝāĻŧ āĻĢāϞāĻžāĻĢāϞ āϏā§āĻ āĻšāĻžāĻāĻžāϰ āĻšāĻžāĻāĻžāϰ āϰā§āĻāϰā§āĻĄ āϏā§āĻŽāĻŋāϤ āĻāϰāϤ⧠āϏāĻžāĻšāĻžāϝā§āϝ āĻāϰā§, āĻāĻŋāύā§āϤ⧠āĻļāϰā§āϤ āĻāĻžāϞ⧠āĻāĻā§ Ņ āύāĻŋāϰā§āĻŦāĻžāĻāύāĻā§ āĻāĻāĻļā§ āϰā§āĻāϰā§āĻĄā§ āϏāĻāĻā§āĻāĻŋāϤ āĻāϰā§āĨ¤
āĻāĻāĻžāύ⧠āĻā§āĻŦāĻŋāϞ āĻĢāĻžāĻāĻļāύ āĻāĻāĻāĻŋ āĻāĻžāϞ āĻŦāĻŋāĻāϞā§āĻĒ āĻšāϤ⧠āĻĒāĻžāϰā§.
āĻāĻāĻžāĻĄāĻŧāĻžāĻ, āĻāĻāĻāĻŋ āĻā§āĻŦāĻŋāϞ āĻĢāĻžāĻāĻļāύ āĻāĻžāϰā§āϝāĻāϰ āĻāϰāĻžāϰ āϏāĻŽāϝāĻŧ āĻāϰāĻ āĻ āύā§āĻŽāĻžāύāϝā§āĻā§āϝ āĻāĻŦāĻ āϏāĻžāĻŽāĻā§āĻāϏā§āϝāĻĒā§āϰā§āĻŖāĨ¤
āĻāĻĻāĻžāĻšāϰāĻŖ
āĻāϏā§āύ āĻāĻāĻāĻŋ āĻāĻĻāĻžāĻšāϰāĻŖ āĻšāĻŋāϏāĻžāĻŦā§ āĻĒā§āϰāĻļā§āύ āĻĄāĻžāĻāĻžāĻŦā§āϏ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰ⧠āĻāĻāĻāĻŋ āĻāĻĻāĻžāĻšāϰāĻŖ āĻŦāĻžāϏā§āϤāĻŦāĻžāϝāĻŧāύ āĻĻā§āĻāĻŋāĨ¤
āĻāĻāĻāĻž āĻ āύā§āϰā§āϧ āĻāĻā§ āύāĻŋāϰā§āĻŦāĻžāĻāύ, āϝāĻž āĻŦā§āĻļ āĻāϝāĻŧā§āĻāĻāĻŋ āĻā§āĻŦāĻŋāϞāĻā§ āĻāĻāϤā§āϰāĻŋāϤ āĻāϰ⧠āĻāĻŦāĻ āĻāĻāĻāĻŋ āĻāĻŋāĻ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰ⧠(āĻ āĻĒāĻžāϰā§āĻāĻŋāĻ āĻĒā§āϰāĻļā§āύ), āϝā§āĻāĻžāύ⧠āĻ āϧāĻŋāĻā§āĻā§āϤāĻŋ āĻāĻŽā§āϞ āĻĻā§āĻŦāĻžāϰāĻž āĻā§āĻ āĻāϰāĻž āĻšāϝāĻŧ (āĻāϰ āĻŽāĻžāϧā§āϝāĻŽā§ āĻāĻĒāϏā§āĻĨāĻŋāϤ) āĻĨā§āĻā§ "āĻ āĻĒāĻžāϰā§āĻāĻŋāĻ āĻĒā§āϰāĻļā§āύ":
āĻ āύā§āϰā§āϧ āύāĻ 1
(@p__linq__0 nvarchar(4000))SELECT
1 AS [C1],
[Extent1].[Id] AS [Id],
[Join2].[Object_Id] AS [Object_Id],
[Join2].[ObjectType_Id] AS [ObjectType_Id],
[Join2].[Name] AS [Name],
[Join2].[ExternalId] AS [ExternalId]
FROM [dbo].[Questions] AS [Extent1]
INNER JOIN (SELECT [Extent2].[Object_Id] AS [Object_Id],
[Extent2].[Question_Id] AS [Question_Id], [Extent3].[ExternalId] AS [ExternalId],
[Extent3].[ObjectType_Id] AS [ObjectType_Id], [Extent4].[Name] AS [Name]
FROM [dbo].[ObjectQuestions] AS [Extent2]
INNER JOIN [dbo].[Objects] AS [Extent3] ON [Extent2].[Object_Id] = [Extent3].[Id]
LEFT OUTER JOIN [dbo].[ObjectTypes] AS [Extent4]
ON [Extent3].[ObjectType_Id] = [Extent4].[Id] ) AS [Join2]
ON [Extent1].[Id] = [Join2].[Question_Id]
WHERE ([Extent1].[AnswerId] IS NULL) AND (0 = [Extent1].[Exp]) AND ( EXISTS (SELECT
1 AS [C1]
FROM [dbo].[OperativeQuestions] AS [Extent5]
WHERE (([Extent5].[Email] = @p__linq__0) OR (([Extent5].[Email] IS NULL)
AND (@p__linq__0 IS NULL))) AND ([Extent5].[Id] = [Extent1].[Id])
));
āĻāĻŋāĻāĻāĻŋāϰ āĻāĻāĻāĻŋ āĻŦāϰāĻ āĻāĻāĻŋāϞ āĻāĻ āύ āϰāϝāĻŧā§āĻā§: āĻāϤ⧠āϏāĻžāĻŦāĻā§āϝāĻŧā§āϰāĻŋ āϝā§āĻ āϰāϝāĻŧā§āĻā§ āĻāĻŦāĻ āĻŦāĻžāĻāĻžāĻ āĻāϰāĻž āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰ⧠āϏā§āĻŦāϤāύā§āϤā§āϰ, āϝāĻž āϏāĻžāϧāĻžāϰāĻŖāĻāĻžāĻŦā§ āĻāĻāĻāĻŋ āĻŽā§āĻāĻžāĻŽā§āĻāĻŋ āϏāĻŽā§āĻĒāĻĻ-āύāĻŋāĻŦāĻŋāĻĄāĻŧ āĻ āĻĒāĻžāϰā§āĻļāύāĨ¤
OperativeQuestions āĻĨā§āĻā§ āĻāĻāĻāĻŋ āύāĻŽā§āύāĻž āĻĒā§āϰāĻžāϝāĻŧ āĻĻāĻļ āĻšāĻžāĻāĻžāϰ āϰā§āĻāϰā§āĻĄ.
āĻāĻ āĻā§āϝā§āϝāĻŧāĻžāϰā§āĻāĻŋāϰ āĻĒā§āϰāϧāĻžāύ āϏāĻŽāϏā§āϝāĻž āĻšāϞ āϝ⧠āĻŦāĻžāĻāϰā§āϰ āĻā§āϝā§āϝāĻŧāĻžāϰ⧠āĻĨā§āĻā§ āϰā§āĻāϰā§āĻĄā§āϰ āĻāύā§āϝ, āĻāĻāĻāĻŋ āĻ āĻā§āϝāύā§āϤāϰā§āĻŖ āϏāĻžāĻŦāĻā§āϝāĻŧā§āϰāĻŋ [OperativeQuestions] āĻāĻŋāĻāϤ⧠āĻāĻžāϰā§āϝāĻāϰ āĻāϰāĻž āĻšāϝāĻŧ, āϝāĻž [āĻāĻŽā§āϞ] = @p__linq__0 āĻāϰ āĻāύā§āϝ āĻāĻŽāĻžāĻĻā§āϰ āĻāĻāĻāĻĒā§āĻ āύāĻŋāϰā§āĻŦāĻžāĻāύ āϏā§āĻŽāĻŋāϤ āĻāϰāϤ⧠āĻĻā§āϝāĻŧ (āĻāϰ āĻŽāĻžāϧā§āϝāĻŽā§ āĻāĻĒāϏā§āĻĨāĻŋāϤ) āĻļāϤ āĻļāϤ āϰā§āĻāϰā§āĻĄ āĻĒāϰā§āϝāύā§āϤāĨ¤
āĻāĻŦāĻ āĻāĻāĻž āĻŽāύ⧠āĻšāϤ⧠āĻĒāĻžāϰ⧠āϝ⧠āϏāĻžāĻŦāĻā§āϝāĻŧā§āϰāĻŋāϰ āϰā§āĻāϰā§āĻĄāĻā§āϞāĻŋ āĻāĻāĻŦāĻžāϰ [āĻāĻŽā§āϞ] = @p__linq__0 āĻĻā§āĻŦāĻžāϰāĻž āĻāĻŖāύāĻž āĻāϰāĻž āĻāĻāĻŋāϤ, āĻāĻŦāĻ āϤāĻžāϰāĻĒāϰ āĻāĻ āĻāϝāĻŧā§āĻāĻļ āϰā§āĻāϰā§āĻĄāĻā§āϞāĻŋāĻā§ āĻĒā§āϰāĻļā§āύāĻā§āϞāĻŋāϰ āϏāĻžāĻĨā§ āĻāĻāĻĄāĻŋ āĻĻā§āĻŦāĻžāϰāĻž āϏāĻāϝā§āĻā§āϤ āĻāϰāĻž āĻāĻāĻŋāϤ āĻāĻŦāĻ āĻā§āϝāĻŧā§āϰāĻŋ āĻĻā§āϰā§āϤ āĻšāĻŦā§ā§ˇ
āĻĒā§āϰāĻā§āϤāĻĒāĻā§āώā§, āϏāĻŽāϏā§āϤ āĻā§āĻŦāĻŋāϞā§āϰ āĻāĻāĻāĻŋ āĻ āύā§āĻā§āϰāĻŽāĻŋāĻ āϏāĻāϝā§āĻ āϰāϝāĻŧā§āĻā§: āĻ āĻĒāĻžāϰā§āĻāĻŋāĻ āĻĒā§āϰāĻļā§āύ āĻĨā§āĻā§ āĻāĻāĻĄāĻŋāϰ āϏāĻžāĻĨā§ āĻāĻāĻĄāĻŋ āĻĒā§āϰāĻļā§āύā§āϰ āĻāĻŋāĻ āĻŋāĻĒāϤā§āϰ āĻĒāϰā§āĻā§āώāĻž āĻāϰāĻž āĻāĻŦāĻ āĻāĻŽā§āϞ āĻĻā§āĻŦāĻžāϰāĻž āĻĢāĻŋāϞā§āĻāĻžāϰ āĻāϰāĻžāĨ¤
āĻĒā§āϰāĻā§āϤāĻĒāĻā§āώā§, āĻ āύā§āϰā§āϧāĻāĻŋ āĻšāĻžāĻāĻžāϰ āĻšāĻžāĻāĻžāϰ āĻ āĻĒāĻžāϰā§āĻāĻŋāĻ āĻĒā§āϰāĻļā§āύ āϰā§āĻāϰā§āĻĄā§āϰ āϏāĻžāĻĨā§ āĻāĻžāĻ āĻāϰā§, āϤāĻŦā§ āĻāĻŽā§āϞā§āϰ āĻŽāĻžāϧā§āϝāĻŽā§ āĻļā§āϧā§āĻŽāĻžāϤā§āϰ āĻāĻā§āϰāĻšā§āϰ āĻĄā§āĻāĻž āĻĒā§āϰāϝāĻŧā§āĻāύāĨ¤
āĻ āĻĒāĻžāϰā§āĻāĻŋāĻ āĻĒā§āϰāĻļā§āύ āĻĒāĻžāĻ ā§āϝ āĻĻā§āĻā§āύ:
āĻ āύā§āϰā§āϧ āύāĻ 2
CREATE VIEW [dbo].[OperativeQuestions]
AS
SELECT DISTINCT Q.Id, USR.email AS Email
FROM [dbo].Questions AS Q INNER JOIN
[dbo].ProcessUserAccesses AS BPU ON BPU.ProcessId = CQ.Process_Id
OUTER APPLY
(SELECT 1 AS HasNoObjects
WHERE NOT EXISTS
(SELECT 1
FROM [dbo].ObjectUserAccesses AS BOU
WHERE BOU.ProcessUserAccessId = BPU.[Id] AND BOU.[To] IS NULL)
) AS BO INNER JOIN
[dbo].Users AS USR ON USR.Id = BPU.UserId
WHERE CQ.[Exp] = 0 AND CQ.AnswerId IS NULL AND BPU.[To] IS NULL
AND (BO.HasNoObjects = 1 OR
EXISTS (SELECT 1
FROM [dbo].ObjectUserAccesses AS BOU INNER JOIN
[dbo].ObjectQuestions AS QBO
ON QBO.[Object_Id] =BOU.ObjectId
WHERE BOU.ProcessUserAccessId = BPU.Id
AND BOU.[To] IS NULL AND QBO.Question_Id = CQ.Id));
DbContext-āĻ āĻĒā§āϰāĻžāĻĨāĻŽāĻŋāĻ āĻāĻŋāĻ āĻŽā§āϝāĻžāĻĒāĻŋāĻ (EF āĻā§āϰ 2)
public class QuestionsDbContext : DbContext
{
//...
public DbQuery<OperativeQuestion> OperativeQuestions { get; set; }
//...
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Query<OperativeQuestion>().ToView("OperativeQuestions");
}
}
āĻĒā§āϰāĻžāĻĨāĻŽāĻŋāĻ LINQ āĻĒā§āϰāĻļā§āύ
var businessObjectsData = await context
.OperativeQuestions
.Where(x => x.Email == Email)
.Include(x => x.Question)
.Select(x => x.Question)
.SelectMany(x => x.ObjectQuestions,
(x, bo) => new
{
Id = x.Id,
ObjectId = bo.Object.Id,
ObjectTypeId = bo.Object.ObjectType.Id,
ObjectTypeName = bo.Object.ObjectType.Name,
ObjectExternalId = bo.Object.ExternalId
})
.ToListAsync();
āĻāĻ āĻŦāĻŋāĻļā§āώ āĻā§āώā§āϤā§āϰā§, āĻāĻŽāϰāĻž āĻĒāϰāĻŋāĻāĻžāĻ āĻžāĻŽā§āĻāϤ āĻĒāϰāĻŋāĻŦāϰā§āϤāύ āĻāĻžāĻĄāĻŧāĻžāĻ āĻāĻ āϏāĻŽāϏā§āϝāĻžāϰ āϏāĻŽāĻžāϧāĻžāύ āĻŦāĻŋāĻŦā§āĻāύāĻž āĻāϰāĻāĻŋ, āϰā§āĻĄāĻŋāĻŽā§āĻĄ āĻĢāϞāĻžāĻĢāϞā§āϰ āϏāĻžāĻĨā§ āĻāĻāĻāĻŋ āĻĒā§āĻĨāĻ āϏāĻžāϰāĻŖā§ āĻĒā§āϰāĻŦāϰā§āϤāύ āύāĻž āĻāϰ⧠("āĻ ā§āϝāĻžāĻāĻāĻŋāĻ āĻā§āϝāĻŧā§āϰāĻŋ"), āϝāĻžāϰ āĻāύā§āϝ āĻāĻāĻŋ āĻĄā§āĻāĻž āĻĻāĻŋāϝāĻŧā§ āĻĒā§āϰāĻŖ āĻāϰāĻžāϰ āĻāĻŦāĻ āĻāĻāĻŋ āĻāĻĒ āĻā§ āĻĄā§āĻ āϰāĻžāĻāĻžāϰ āĻāύā§āϝ āĻāĻāĻāĻŋ āĻĒāĻĻā§āϧāϤāĻŋāϰ āĻĒā§āϰāϝāĻŧā§āĻāύ āĻšāĻŦā§āĨ¤ .
āϝāĻĻāĻŋāĻ āĻāĻāĻŋ āĻāĻāĻāĻŋ āĻāĻžāϞ āϏāĻŽāĻžāϧāĻžāύ, āĻāĻ āϏāĻŽāϏā§āϝāĻžāĻāĻŋ āĻ āĻĒā§āĻāĻŋāĻŽāĻžāĻāĻ āĻāϰāĻžāϰ āĻāϰā§āĻāĻāĻŋ āĻŦāĻŋāĻāϞā§āĻĒ āϰāϝāĻŧā§āĻā§āĨ¤
āĻŽā§āϞ āĻāĻĻā§āĻĻā§āĻļā§āϝ āĻšāϞ āĻ āĻĒāĻžāϰā§āĻāĻŋāĻ āĻĒā§āϰāĻļā§āύ āĻāĻŋāĻ āĻĨā§āĻā§ [āĻāĻŽā§āϞ] = @p__linq__0 āĻĻā§āĻŦāĻžāϰāĻž āĻāύā§āĻā§āϰāĻŋ āĻā§āϝāĻžāĻļā§ āĻāϰāĻžāĨ¤
āĻĄāĻžāĻāĻžāĻŦā§āϏā§āϰ āĻŽāϧā§āϝ⧠āĻā§āĻŦāĻŋāϞ āĻĢāĻžāĻāĻļāύ [āĻĄāĻŋāĻŦāĻŋāĻ] [āĻ āĻĒāĻžāϰā§āĻāĻŋāĻ āĻĒā§āϰāĻļā§āύ āĻāĻāĻāĻžāϰāĻŽā§āϞ] āĻĒā§āϰāĻŦāϰā§āϤāύ āĻāϰā§āύāĨ¤
āĻāĻāĻāĻŋ āĻāύāĻĒā§āĻ āĻĒā§āϝāĻžāϰāĻžāĻŽāĻŋāĻāĻžāϰ āĻšāĻŋāϏāĻžāĻŦā§ āĻāĻŽā§āϞ āĻĒāĻžāĻ āĻžāύā§āϰ āĻŽāĻžāϧā§āϝāĻŽā§, āĻāĻŽāϰāĻž āĻŽāĻžāύāĻā§āϞāĻŋāϰ āĻāĻāĻāĻŋ āĻā§āĻŦāĻŋāϞ āĻĢāĻŋāϰ⧠āĻĒāĻžāĻ:
āĻ āύā§āϰā§āϧ āύāĻ 3
CREATE FUNCTION [dbo].[OperativeQuestionsUserMail]
(
@Email nvarchar(4000)
)
RETURNS
@tbl TABLE
(
[Id] uniqueidentifier,
[Email] nvarchar(4000)
)
AS
BEGIN
INSERT INTO @tbl ([Id], [Email])
SELECT Id, @Email
FROM [OperativeQuestions] AS [x] WHERE [x].[Email] = @Email;
RETURN;
END
āĻāĻāĻŋ āĻāĻāĻāĻŋ āĻĒā§āϰā§āĻŦāύāĻŋāϰā§āϧāĻžāϰāĻŋāϤ āĻĄā§āĻāĻž āϏā§āĻā§āϰāĻžāĻāĻāĻžāϰ āϏāĻš āĻŽāĻžāύāĻā§āϞāĻŋāϰ āĻāĻāĻāĻŋ āĻā§āĻŦāĻŋāϞ āĻĒā§āϰāĻĻāĻžāύ āĻāϰā§āĨ¤
OperativeQuestionsUserMail-āĻāϰ āĻĒā§āϰāĻļā§āύāĻā§āϞāĻŋ āϏāϰā§āĻŦā§āϤā§āϤāĻŽ āĻšāϤ⧠āĻāĻŦāĻ āϏāϰā§āĻŦā§āϤā§āϤāĻŽ āĻā§āϝā§āϝāĻŧāĻžāϰ⧠āĻĒāϰāĻŋāĻāϞā§āĻĒāύāĻžāϰ āĻāύā§āϝ, āĻāĻāĻāĻŋ āĻāĻ ā§āϰ āĻāĻžāĻ āĻžāĻŽā§āϰ āĻĒā§āϰāϝāĻŧā§āĻāύ, āĻāĻŦāĻ āύāϝāĻŧ āϰāĻŋāĻāĻžāϰā§āύ āĻšāĻŋāϏāĻžāĻŦā§ āĻā§āĻŦāĻŋāϞ āĻĢā§āϰāϤ...
āĻāĻ āĻā§āώā§āϤā§āϰā§, āĻĒā§āϰāϝāĻŧā§āĻāύā§āϝāĻŧ āĻā§āϝā§āϝāĻŧāĻžāϰ⧠1 āĻā§āϝā§āϝāĻŧāĻžāϰ⧠4 āĻ āϰā§āĻĒāĻžāύā§āϤāϰāĻŋāϤ āĻšāϝāĻŧ:
āĻ āύā§āϰā§āϧ āύāĻ 4
(@p__linq__0 nvarchar(4000))SELECT
1 AS [C1],
[Extent1].[Id] AS [Id],
[Join2].[Object_Id] AS [Object_Id],
[Join2].[ObjectType_Id] AS [ObjectType_Id],
[Join2].[Name] AS [Name],
[Join2].[ExternalId] AS [ExternalId]
FROM (
SELECT Id, Email FROM [dbo].[OperativeQuestionsUserMail] (@p__linq__0)
) AS [Extent0]
INNER JOIN [dbo].[Questions] AS [Extent1] ON([Extent0].Id=[Extent1].Id)
INNER JOIN (SELECT [Extent2].[Object_Id] AS [Object_Id], [Extent2].[Question_Id] AS [Question_Id], [Extent3].[ExternalId] AS [ExternalId], [Extent3].[ObjectType_Id] AS [ObjectType_Id], [Extent4].[Name] AS [Name]
FROM [dbo].[ObjectQuestions] AS [Extent2]
INNER JOIN [dbo].[Objects] AS [Extent3] ON [Extent2].[Object_Id] = [Extent3].[Id]
LEFT OUTER JOIN [dbo].[ObjectTypes] AS [Extent4]
ON [Extent3].[ObjectType_Id] = [Extent4].[Id] ) AS [Join2]
ON [Extent1].[Id] = [Join2].[Question_Id]
WHERE ([Extent1].[AnswerId] IS NULL) AND (0 = [Extent1].[Exp]);
DbContext (EF āĻā§āϰ 2) āĻ āĻŽā§āϝāĻžāĻĒāĻŋāĻ āĻāĻŋāĻ āĻāĻŦāĻ āĻĢāĻžāĻāĻļāύ
public class QuestionsDbContext : DbContext
{
//...
public DbQuery<OperativeQuestion> OperativeQuestions { get; set; }
//...
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Query<OperativeQuestion>().ToView("OperativeQuestions");
}
}
public static class FromSqlQueries
{
public static IQueryable<OperativeQuestion> GetByUserEmail(this DbQuery<OperativeQuestion> source, string Email)
=> source.FromSql($"SELECT Id, Email FROM [dbo].[OperativeQuestionsUserMail] ({Email})");
}
āĻā§āĻĄāĻŧāĻžāύā§āϤ LINQ āĻĒā§āϰāĻļā§āύ
var businessObjectsData = await context
.OperativeQuestions
.GetByUserEmail(Email)
.Include(x => x.Question)
.Select(x => x.Question)
.SelectMany(x => x.ObjectQuestions,
(x, bo) => new
{
Id = x.Id,
ObjectId = bo.Object.Id,
ObjectTypeId = bo.Object.ObjectType.Id,
ObjectTypeName = bo.Object.ObjectType.Name,
ObjectExternalId = bo.Object.ExternalId
})
.ToListAsync();
āĻāĻžāϰā§āϝ āϏāĻŽā§āĻĒāĻžāĻĻāύā§āϰ āϏāĻŽāϝāĻŧ 200-800 ms āĻĨā§āĻā§ 2-20 ms, āĻāϤā§āϝāĻžāĻĻāĻŋāϤ⧠āύā§āĻŽā§ āĻāϏā§āĻā§, āĻ āϰā§āĻĨāĻžā§ āĻĻāĻļāĻā§āĻŖ āĻĻā§āϰā§āϤāĨ¤
āϝāĻĻāĻŋ āĻāĻŽāϰāĻž āĻāĻāĻŋāĻā§ āĻāϰāĻ āĻāĻĄāĻŧāĻāĻžāĻŦā§ āύāĻŋāĻ, āϤāĻžāĻšāϞ⧠350 ms āĻāϰ āĻĒāϰāĻŋāĻŦāϰā§āϤ⧠āĻāĻŽāϰāĻž 8 ms āĻĒā§āϝāĻŧā§āĻāĻŋāĨ¤
āϏā§āϏā§āĻĒāώā§āĻ āϏā§āĻŦāĻŋāϧāĻžāĻā§āϞāĻŋ āĻĨā§āĻā§ āĻāĻŽāϰāĻžāĻ āĻĒāĻžāĻ:
- āĻĒāĻĄāĻŧāĻžāϰ āϞā§āĻĄā§āϰ āϏāĻžāϧāĻžāϰāĻŖ āĻšā§āϰāĻžāϏ,
- āĻŦā§āϞāĻ āĻāϰāĻžāϰ āϏāĻŽā§āĻāĻžāĻŦāύāĻž āĻāϞā§āϞā§āĻāϝā§āĻā§āϝ āĻšā§āϰāĻžāϏ
- āĻā§āϰāĻšāĻŖāϝā§āĻā§āϝ āĻŽāĻžāύāĻā§āϞāĻŋāϤ⧠āĻāĻĄāĻŧ āĻŦā§āϞāĻāĻŋāĻ āϏāĻŽāϝāĻŧ āĻšā§āϰāĻžāϏ āĻāϰāĻž
āĻāĻĒāϏāĻāĻšāĻžāϰ
āĻĄāĻžāĻāĻžāĻŦā§āϏ āĻāϞā§āϰ āĻ āĻĒā§āĻāĻŋāĻŽāĻžāĻāĻā§āĻļāύ āĻāĻŦāĻ āĻĢāĻžāĻāύ-āĻāĻŋāĻāύāĻŋāĻ āĻāĻŽāĻāϏ āĻāϏāĻāĻŋāĻāĻāϞ āĻĻā§āĻŦāĻžāϰāĻž āϞāĻŋāύāĻā§āĻ āĻāĻāĻāĻŋ āϏāĻŽāϏā§āϝāĻž āϝāĻž āϏāĻŽāĻžāϧāĻžāύ āĻāϰāĻž āϝā§āϤ⧠āĻĒāĻžāϰā§āĨ¤
āĻāĻ āĻāĻžāĻā§ āĻŽāύā§āϝā§āĻ āĻāĻŦāĻ āϧāĻžāϰāĻžāĻŦāĻžāĻšāĻŋāĻāϤāĻž āĻā§āĻŦāĻ āĻā§āϰā§āϤā§āĻŦāĻĒā§āϰā§āĻŖāĨ¤
āĻĒā§āϰāĻā§āϰāĻŋāϝāĻŧāĻžāϰ āĻļā§āϰā§āϤā§:
- āĻ āύā§āϰā§āϧāĻāĻŋ āĻāĻžāĻ āĻāϰ⧠āĻāĻŽāύ āĻĄā§āĻāĻž āĻĒāϰā§āĻā§āώāĻž āĻāϰāĻž āĻĒā§āϰāϝāĻŧā§āĻāύ (āĻŽāĻžāύ, āύāĻŋāϰā§āĻŦāĻžāĻāĻŋāϤ āĻĄā§āĻāĻž āĻĒā§āϰāĻāĻžāϰ)
- āĻāĻ āϤāĻĨā§āϝ āϏāĻ āĻŋāĻ āϏā§āĻā§ āĻŦāĻšāύ
- āĻā§āĻŦāĻŋāϞā§āϰ āĻŽāϧā§āϝ⧠āϝā§āĻāĻĻāĻžāύā§āϰ āĻļāϰā§āϤāĻā§āϞāĻŋāϰ āϏāĻ āĻŋāĻāϤāĻž āĻĒāϰā§āĻā§āώāĻž āĻāϰā§āύ
āĻĒāϰāĻŦāϰā§āϤ⧠āĻ āĻĒā§āĻāĻŋāĻŽāĻžāĻāĻā§āĻļāĻžāύ āĻĒā§āύāϰāĻžāĻŦā§āϤā§āϤāĻŋ āĻĒā§āϰāĻāĻžāĻļ āĻāϰā§:
- āĻ āύā§āϰā§āϧā§āϰ āĻāĻŋāϤā§āϤāĻŋāϤ⧠āĻāĻŦāĻ āĻĒā§āϰāϧāĻžāύ āĻ āύā§āϰā§āϧ āĻĢāĻŋāϞā§āĻāĻžāϰ āϏāĻāĻā§āĻāĻžāϝāĻŧāĻŋāϤ āĻāϰā§
- āĻ āύā§āϰā§āĻĒ āĻā§āϝā§āϝāĻŧāĻžāϰ⧠āĻŦā§āϞāĻ āĻĒā§āύāϰāĻžāĻŦā§āϤā§āϤāĻŋ āĻāĻŦāĻ āĻ āĻŦāϏā§āĻĨāĻžāϰ āĻā§āĻĻ āĻŦāĻŋāĻļā§āϞā§āώāĻŖ
- āĻāϰ āĻāύā§āϝ SSMS āĻŦāĻž āĻ āύā§āϝ GUI-āϤ⧠SQL āϏāĻžāϰā§āĻāĻžāϰ āύāĻŋāĻā§āĻā§ āĻ āĻĒā§āĻāĻŋāĻŽāĻžāĻāĻ āĻāϰ⧠āĻāϏāĻāĻŋāĻāĻāϞ āĻā§āϝāĻŧā§āϰāĻŋ (āĻāĻāĻāĻŋ āĻŽāϧā§āϝāĻŦāϰā§āϤ⧠āĻĄā§āĻāĻž āϏāĻā§āĻāϝāĻŧāϏā§āĻĨāĻžāύ āĻŦāϰāĻžāĻĻā§āĻĻ āĻāϰāĻž, āĻāĻ āϏā§āĻā§āϰā§āĻ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰ⧠āĻĢāϞāĻžāĻĢāϞ āĻā§āϝā§āϝāĻŧāĻžāϰ⧠āϤā§āϰāĻŋ āĻāϰāĻž (āĻāĻāĻžāύ⧠āĻŦā§āĻļ āĻāϝāĻŧā§āĻāĻāĻŋ āĻĨāĻžāĻāϤ⧠āĻĒāĻžāϰā§))
- āĻļā§āώ āĻĒāϰā§āϝāĻžāϝāĻŧā§, āĻāĻāĻāĻŋ āĻāĻŋāϤā§āϤāĻŋ āĻšāĻŋāϏāĻžāĻŦā§ āĻā§āϰāĻšāĻŖ āĻĢāϞāĻžāĻĢāϞ āĻāϏāĻāĻŋāĻāĻāϞ āĻā§āϝāĻŧā§āϰāĻŋ, āĻāĻžāĻ āĻžāĻŽā§ āĻĒā§āύāϰā§āύāĻŋāϰā§āĻŽāĻžāĻŖ āĻāϰāĻž āĻšāĻā§āĻā§ LINQ āĻĒā§āϰāĻļā§āύ
āĻĢāϞ⧠LINQ āĻĒā§āϰāĻļā§āύ āĻāĻŋāĻšā§āύāĻŋāϤ āĻ āύā§āĻā§āϞ āĻĨā§āĻā§ āĻāĻ āύ āĻ āĻāĻŋāύā§āύ āĻšāϤ⧠āĻšāĻŦā§ āĻāϏāĻāĻŋāĻāĻāϞ āĻā§āϝāĻŧā§āϰāĻŋ āĻĒāϝāĻŧā§āύā§āĻ 3 āĻĨā§āĻā§āĨ¤
āϏā§āĻŦā§āĻā§āϤāĻŋ
āϏāĻšāĻāϰā§āĻŽā§āĻĻā§āϰ āĻ
āύā§āĻ āϧāύā§āϝāĻŦāĻžāĻĻ Đ¸ āĻā§āĻŽā§āĻĒāĻžāύāĻŋ āĻĨā§āĻā§ āϏā§āĻā§āϰāĻ āĻāĻ āĻāĻĒāĻžāĻĻāĻžāύ āĻĒā§āϰāϏā§āϤā§āϤ āĻāϰāϤ⧠āϏāĻšāĻžāϝāĻŧāϤāĻžāϰ āĻāύā§āϝāĨ¤
āĻāϤā§āϏ: www.habr.com
