C# Cơ bản .NET Core §1) Cài đặt, chương trình C# đầu tiên §2) Biến, kiểu dữ liệu và nhập/xuất §3) Toán tử số học và gán §4) So sánh, logic và lệnh if, switch §5) Vòng lặp for, while §6) Phương thức - Method §7) Phương thức - Delegate §8) Lớp - Class §9) Kiểu vô danh và dynamic §10) Biểu thức lambda §11) Event §12) Hàm hủy - Quá tải toán tử - thành viên tĩnh - indexer §13) Lớp lồng nhau - namespace §14) null và nullable §15) Mảng §16) Chuỗi ký tự §17) Tính kế thừa §18) Tính đa hình - abstract - interface §19) Struct và Enum §20) Ngoại lệ Exeption §21) IDisposable - using §22) File cơ bản §23) FileStream §24) Generic §25) Collection - List §26) SortedList §27) Queue / Stack §28) Linkedlist §29) Dictionary - HashSet §30) Phương thức mở rộng §31) ObservableCollection §32) LINQ §33) (Multithreading) async - bất đồng bộ §34) Type §35) Attribute Annotation §36) DI Dependency Injection §37) (Multithreading) Parallel §38) (Networking) HttpClient §39) (Networking) HttpMessageHandler §40) (Networking) HttpListener §41) (Networking) Tcp TcpListenerr/TcpClient §42) (ADO.NET) SqlConnection §43) (ADO.NET) SqlCommand §44) (EF Core) Tổng quan §45) (EF Core) Tạo Model §46) (EF Core) Fluent API §47) (EF Core) Query §48) (EF Core) Scaffold §49) (EF Core) Migration §50) (ASP.NET CORE) Hello World! §51) (ASP.NET CORE) Middleware §52) (ASP.NET CORE) Map - Request - Response §53) (ASP.NET CORE) IServiceCollection - MapWhen §54) (ASP.NET CORE) Session - ISession §55) (ASP.NET CORE) Configuration §56) (ASP.NET CORE MVC) Controller - View

Truy vấn dữ liệu cơ bản với EF Core

Việc thực hiện truy vấn luôn làm việc với Linq, nên đảm bảo thêm namespace System.Linq vào. Copy Source Code (EF03) đổi tên thành EF04 để thực hành.

Ví dụ, lấy tất cả các sản phẩm

using (var context = new ShopContext())
{
    var products = await context.products.ToListAsync();
    foreach (var pro in products)
    {
        Console.WriteLine(pro.Name);
    }
}

Hoặc

var products = await (from p in context.products
                      select p)
                     .ToListAsync();

foreach (var pro in products)
{
    Console.WriteLine(pro.Name);
}

Cũng có thể áp dụng kỹ thuật async để duyệt qua từng phần tử.

using (var context = new ShopContext())
{
    var products =  (from p in context.products
                          select p)
                         .ToAsyncEnumerable();

    await products.ForEachAsync(
        p =>
        {
            Console.WriteLine($"{p.Name} - {p.Price}");
        }
    );
}

Để tìm một dòng dữ liệu theo PK Key, thì dùng FindAsync

var product = await context.products.FindAsync(6);
if (product !=  null)
    Console.WriteLine($"{product.Name}");

Lấy phần tử đầu tiên thỏa mãn điều kiện

using (var context = new ShopContext())
{
    var product = await context.products.FirstOrDefaultAsync(p => (p.Price > 3 && p.Name.StartsWith("S")));
    if (product !=  null)
        Console.WriteLine($"{product.Name}");
}

Truy vấn dữ với Raw Query

string query = "select * from products where ProductId > 3";
List<Product> products = await  context.products.FromSql(query).ToListAsync();
foreach (var pro in products)
    Console.WriteLine(pro.Name);

Các hàm trong EF

Có các hàm xây dựng sẵn trong EF.Functions. như Like

var products = await (from p in context.products
               where EF.Functions.Like(p.Name, "%phẩm%")
               select p)
               .ToListAsync();
Đăng ký theo dõi ủng hộ kênh