C# Raw Query๋ฅผ ํตํ ๋์ ์นผ๋ผ ๋งคํ๋ฐฉ๋ฒ
C# Asp.NET MVC๋ฅผ ์ฌ์ฉํ์๋ ๋ถ๋ค์ด๋ผ๋ฉด Linq๋ฅผ ํตํ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฌ์ฉ์ ์ต์ํด ์์๊ฑฐ๋ผ ์๊ฐํฉ๋๋ค.
ํ์ง๋ง ์ผ๋ถ ๊ฐ๋ณ ์นผ๋ผ์ ์ ์ฉ์ด ํ์ํ ์๋น์ค์ ๊ฒฝ์ฐ
๋ฐ๋๋ก ํด๋์ค ๋งคํ์ด ํ์ํ ORM์ด ์๋ Raw Query๋ฅผ ์ฌ์ฉํด์ผ ํ๋ ๊ฒฝ์ฐ๊ฐ ๋ฐ์ํ์ง์,
Continue Reading
์ฌ๊ธฐ์ ORM์ Object / Relational Mapping์ ์๋ฏธํฉ๋๋ค.
๋ฐ์ดํฐ๋ฒ ์ด์ค์ Relation์ ๊ฐ์ฒด๋ก ์ ์ํ์ฌ ๋ณด๋ค ์ง๊ด์ ์ผ๋ก ๊ฐ๋ฐ์ด ๊ฐ๋ฅํ๋๋ก ๋๋๋ค๋ ์ ์์
๋๋ค.
๋ค๋ง C#์ Raw Query๋ฅผ ๋ฐ์ก ํ ์ ์๋
string query = "SELECT {columns} FROM {table}"; Database.SqlQuery(query);
์ ํจํด์ ์ฌ์ฉํ ๊ฒฝ์ฐ ์ ๋๋ฆญ์ ํตํ ํ์
์ ์ ์ํด์ฃผ์ด์ผ ํฉ๋๋ค.
๋ณดํต์ ๊ฒฝ์ฐ์๋ ํ์
์ ๋ํ๋ผ ์ ์๋ ํด๋์ค๋ฅผ ํ๋ ๋ ์์ฑ์์ผ ์๋์ฒ๋ผ ๊ตฌ์ฑํ ๊ฒ์
๋๋ค.
https://gist.github.com/KennethanCeyer/950972f65c4df95732b2
๋ค๋ง ํ์๋ ํ
์ด๋ธ์ ๊ฐ๋ณ์ ์ผ๋ก ์์ฑํ๊ณ , ๊ทธ ์์ ์นผ๋ผ๋ง์
์ฌ์ฉ์์ ํ์์ ๋ฐ๋ผ ๊ฐ๋ณ์ ์ผ๋ก ์ถ๊ฐ/์ญ์ /์์ ๋ ์ ์์ผ๋ฉฐ
์นผ๋ผ์ ํ์
์ด๋ ์ด๋ฆ์ ์ ์ถํ ์ ์๊ธฐ ๋๋ฌธ์
"ํด๋์ค ๋งคํ์ด ๋ถ๊ฐ๋ฅ" ํ์์ต๋๋ค.
๋ฐ๋ผ์ ํ์์ ์ํฉ์์๋ ์๋์ ๊ฐ์ ์๊ตฌ์ฌํญ์ ๋ง์กฑํด์ผ ํ์ต๋๋ค.
ํด๋์ค ๋งคํ์ด ํ์์์ด ๊ฐ๋ณ์ผ๋ก ์ถ์ถํด์ผ ํจ.
์ถ์ถํ ๋ฐ์ดํฐ๋ List ํํ๋ก ๋ฐ์์ JsonResult๋ก ๋ฐํ์ด ๊ฐ๋ฅํด์ผ ํจ.
๋ฌผ๋ก ์ด๊ธฐ์ ํ์๋ ์๋์ ๊ฐ์ด ์ฌ์ฉ์ ์๋ํด๋ณด์์ต๋๋ค.
string query = System.IO.File.ReadAllText(Server.MapPath(@"~/ConnectionPool/MySQL/Schemas/Schema.sql")); query = query.Replace("{table}", table); query = query.Replace("{column}", String.Join(",", columns).ToString()); var data = db.Database.SqlQuery(query).ToList();
์์ ์ฌ์ฉ์ฌ๋ก๋ก ์คํ์ ํด๋ณด๋ฉด ์ค์ ํ
์ด๋ธ ๋ก์ฐ๋ฅผ ๊ฐ์ง๊ณ ์ค๋ฉฐ
List์ Count๋ ํ
์ด๋ธ ๋ก์ฐ์ ๊ฐฏ์์ ์ผ์นํฉ๋๋ค.
ํ์ง๋ง List ๋ฐ์ดํฐ ์์ ํค์ ์นผ๋ผ์ ๋น ๊ฐ์ผ๋ก ์ถ์ถ๋ฉ๋๋ค.
์ฌ์ค ์ฐ์ฌ๊ณก์ ๋ง์ ๊ฒ์์ผ๋ก ๋๊ด์ ๊ฑฐ์ณค์ง๋ง
๊ฒฐ๋ก ์ผ๋ก ๋์ด๊ฐ์ ๋ง์์ ๋๋ ค๋ณด๋ฉด C#์์๋ ๋์ ์นผ๋ผ์ ์ถ์ถํ๋ ๊ฒ์ด ๊ฐ๋ฅํฉ๋๋ค.
์๋ ์ฝ๋๋ฅผ ์ฐธ์กฐํ์ธ์.
https://gist.github.com/KennethanCeyer/ba67dc1df770e68ded9e
์ ์ฝ๋์ ๋์๋ฐฉ์์ ์๋์ ๊ฐ์ต๋๋ค.
DynamicSqlQuery ๋ฉ์๋ ์คํ.
์ฟผ๋ฆฌ๋ฅผ ์ฌ์ฉํ์ฌ ๋ฐ์ดํฐ๋ฅผ ๋ฐ๊ธฐ ์์ GetSchemaTable๋ฅผ ๋ฆฌ๋๋ก ์คํ, ์นผ๋ผ ํ์
๊ณผ ๋ค์์ ๊ฐ์ ธ์ด.
TypeBuilder๋ฅผ ํตํด ๊ฐ ์นผ๋ผ์ Setter, Getter ์ ์ ๋ฐ Field๋ฅผ ์ถ๊ฐ, ๊ฐ๋ณ ํด๋์ค๋ฅผ ์์ฑ.
ํด๋์ค์ Type์ ์ด์ฉํ์ฌ SqlQuery์ Element Type์ ๊ฐ๋ณ ํด๋์ค ํ์
์ง์ .
์์ ๋ฐ์ ๋ฐ์ดํฐ์ ToListAsync().Result๋ฅผ ์ด์ฉํ์ฌ ๊ฒฐ๊ณผ๋ฐ์ดํฐ ์์ .