Summary
View original tweet →Khai phá sức mạnh của EF Core với truy vấn SQL thô
Trong thế giới lập trình luôn thay đổi từng ngày, việc làm chủ cách tương tác với database là điều cực kỳ quan trọng. Entity Framework (EF) Core đã trở thành một công cụ đỉnh của chóp cho các lập trình viên, đặc biệt là với những cải tiến gần đây cho phép chạy truy vấn SQL thô. Một dòng tweet của Milan Jovanovic đã chỉ ra một nỗi đau không của riêng ai: làm sao để xử lý mấy cái stored procedure và view cũ kỹ, lạc hậu mà không map thẳng vào entity của mình. Anh ấy chia sẻ rằng tính năng SQL thô của EF Core đã làm mọi thứ trở nên dễ thở hơn, giúp việc tương tác với database mượt mà như lướt sóng.
Dòng tweet nhấn mạnh sự đơn giản khi chỉ cần định nghĩa một class POCO (Plain Old C# Object) đơn giản và chạy SQL query mà không phải đau đầu với mấy cái mapping phức tạp. Điều này đặc biệt hữu ích cho những ai đang phải tích hợp hệ thống legacy vào ứng dụng hiện đại. Ngoài ra, EF Core còn tự động bảo vệ bạn khỏi SQL injection nhờ cơ chế parameterization – một tính năng siêu quan trọng để giữ cho ứng dụng của bạn không bị "hacker gõ cửa".
Lợi ích của truy vấn SQL thô trong EF Core
EF Core 8 mang đến một tính năng "đỉnh của chóp": khả năng query các kiểu không được map bằng SQL thô, giống như Dapper. Tính năng này cho phép bạn chạy SQL query trả về bất kỳ kiểu dữ liệu nào có thể map được mà không cần phải thêm nó vào EF model. Quá tiện lợi khi bạn cần làm việc với view, function, hay stored procedure mà không muốn đụng chạm nhiều đến code cũ.
Chưa hết, EF Core còn bảo vệ bạn khỏi SQL injection – một trong những nỗi ám ảnh của dân lập trình. Bằng cách parameter hóa các query, EF Core đảm bảo rằng mọi tham số bạn truyền vào các method như
FromSqlRaw
đều được xử lý an toàn. Điều này không chỉ giúp bảo mật mà còn làm cho việc code trở nên nhẹ nhàng hơn, để bạn tập trung vào việc "build feature" thay vì lo lắng về mấy cái lỗ hổng bảo mật.POCO Class trong EF Core là gì?
POCO class trong EF Core là một điểm cộng to đùng. Đây là những class C# đơn giản, không cần kế thừa từ bất kỳ base class nào của Entity Framework, giúp bạn thoải mái và linh hoạt hơn. POCO class vẫn hỗ trợ các tính năng như lazy loading và change tracking, nhưng không bị ràng buộc bởi logic truy cập dữ liệu của EF. Điều này làm cho chúng trở thành lựa chọn lý tưởng khi bạn muốn dùng SQL thô, vì bạn có thể tự định nghĩa mapping mà không bị bó buộc bởi ORM.
Chạy Stored Procedure với EF Core
Chạy stored procedure trong EF Core giờ đây cũng dễ như ăn kẹo với các method như
FromSqlRaw
và FromSqlInterpolated
. Những method này giúp bạn chạy stored procedure một cách an toàn, đảm bảo rằng các tham số được truyền vào không bị dính SQL injection. Tính năng này, được hỗ trợ từ EF Core 6.0.10, giúp bạn tích hợp mấy cái stored procedure cũ kỹ vào ứng dụng hiện đại một cách mượt mà, như kiểu "bắc cầu" giữa công nghệ cũ và mới.Khi nào nên dùng SQL thô trong EF Core?
SQL thô trong EF Core không chỉ để chạy stored procedure. Bạn có thể dùng nó cho các query phức tạp hoặc khi hiệu năng là yếu tố sống còn. Cách tiếp cận này mang lại hiệu năng ngang ngửa với Dapper, nhưng bạn vẫn được hưởng lợi từ hệ sinh thái rộng lớn của EF Core. Nó đặc biệt hữu ích khi query của ORM không tối ưu hoặc khi bạn muốn tương tác trực tiếp với SQL.
Tóm lại, những cải tiến trong EF Core, đặc biệt là về SQL thô, mang đến cho lập trình viên những công cụ mạnh mẽ để nâng tầm tương tác với database. Bằng cách đơn giản hóa việc chạy stored procedure, bảo vệ khỏi SQL injection, và hỗ trợ POCO class, EF Core giúp bạn xây dựng những ứng dụng xịn sò, xử lý ngon lành mấy cái database cũ kỹ. Như Milan Jovanovic đã tweet, những tính năng này không chỉ giải quyết nỗi đau hiện tại mà còn mở ra nhiều cơ hội mới cho việc phát triển ứng dụng hiện đại.