30/09/2018, 23:53

ASP.NET MVC có sử dụng sql truy vấn không

Mình trước giờ học về php, quen cách dùng câu lệnh sql để truy vấn giờ mới học cái ASP.NET MVC này thấy nó lạ khó tiếp cận quá. Ai có kinh nghiệm chỉ dẫn mình xíu được không. Khó tiếp cận mô hình MVC này quá ạ. Làm trên winform vẫn dùng được mấy chuỗi sql(…mình ít dùng Store Procedure…) sao sang web ASP.NET MVC hoàn toàn khác thế :(((

Trần Đức Thông viết 01:59 ngày 01/10/2018

Nó tùy thuộc vào cách bạn làm việc với database. MVC mặc định dùng Entity để thao tác với CSDL. Bạn tìm hiểu về Entity Framework sẽ dõ hơn.

Hoàng Thanh Phúc viết 02:02 ngày 01/10/2018

Mình muốn truy xuất nhiều bảng dùng Entiny thì làm sao nhỉ

Phan Hoàng viết 01:55 ngày 01/10/2018

Câu hỏi 1: Bạn thích sử dụng bất cứ ORM gì cũng được, cứ implement cái IRepository (ví dụ như IUserRepository).

public class UsersRepository: IUsersRepository
{
    private readonly string _connectionString;
    public UsersRepository(string connectionString)
    {
        _connectionString = connectionString;
    }

    public User GetUser(int id)
    {
        // Here you are free to do whatever data access code you like
        // You can invoke direct SQL queries, stored procedures, whatever 

        using (var conn = new SqlConnection(_connectionString))
        using (var cmd = conn.CreateCommand())
        {
            conn.Open();
            cmd.CommandText = "SELECT id, name FROM users WHERE id = @id";
            cmd.Parameters.AddWithValue("@id", id);
            using (var reader = cmd.ExecuteReader())
            {
                if (!reader.Read())
                {
                    return null;
                }
                return new User
                {
                    Id = reader.GetInt32(reader.GetOrdinal("id")),
                    Name = reader.GetString(reader.GetOrdinal("name")),
                }
            }
        }
    }
}

Câu hỏi 2: nếu dùng ORM Entity (tên đầy đủ là Linq2Entities, cũng dùng cú pháp Linq) # với Linq2SQL chỉ map 1-1 và work với MS SQL Server only, trong khi Entitiy thì thoải con gà mái và hoạt động với tất cả các driver của bất cứ CSDL nào.

var customers = new Customer[]
	{
	    new Customer{ID = 5, Name = "Sam"},
	    new Customer{ID = 6, Name = "Dave"},
	    new Customer{ID = 7, Name = "Julia"},
	    new Customer{ID = 8, Name = "Sue"}
	};

	// Example orders.
	var orders = new Order[]
	{
	    new Order{ID = 5, Product = "Book"},
	    new Order{ID = 6, Product = "Game"},
	    new Order{ID = 7, Product = "Computer"},
	    new Order{ID = 8, Product = "Shirt"}
	};

	// Join on the ID properties.
	var query = from c in customers
		    join o in orders on c.ID equals o.ID;
Hoàng Thanh Phúc viết 02:08 ngày 01/10/2018

Ừm giờ mới thấy tác dụng của nó, chưa hiểu thì thấy phức tạp. Cảm ơn bạn

Phan Hoàng viết 01:59 ngày 01/10/2018

PHP cũng có rất nhiều ORM nhé, ví dụ như Laravel Eloquent hoặc Doctrine. Thay vì sử dụng SQL raw, bạn viết kiểu functional, vừa dễ hiểu hơn, vừa có thể tạo DB theo đúng cấu trúc của entity.

Bên Java thì có JPQL,

SELECT DISTINCT p
FROM Player p
WHERE p.name = :name

Eloquent

$bear = Player::where('name', '=', 'Misa')->first();
Bài liên quan
0