Chuyển đến nội dung chính

Bài đăng

Hiển thị các bài đăng có nhãn Entity Framework

ASP.NET Identity: Thêm Login và Register page - Part 2

Trong bài viết này, mình sẽ hướng dẫn các bạn setup Login, Register và Logout page. Để dễ dàng tiếp cận, mình sẽ chia ra làm 3 phần: Setup Login, Register Model và View Setup AspNet Identity Implement Login và Register logic Setup Model và View Register page Tạo Register model public class RegisterModel { public string FirstName { get; set; } public string LastName { get; set; } public string Email { get; set; } [DataType(DataType.Password)] public string Password { get; set; } [DataType(DataType.Password)] public string ConfirmPassword { get; set; } public string ReturnUrl { get; set; } } Register.cshtml @model ClaimExample.Models.RegisterModel; <div class="row"> <div class="col-md-4"> <form asp-route-returnUrl="ReturnUrl" method="post"> <h4>Create a new account.</h4> <hr /> <div asp-validation-summary="All" class="text-danger"...

Sử dụng in-memory database trong Entity Framework

Entity Framework Core cho phép bạn lưu trữ và truy xuất dữ liệu đến và từ cơ sở dữ liệu sử dụng bộ nhớ chính của máy tính để lưu trữ (in-memory database). Đây là một cách nhanh chóng và dễ dàng để kiểm tra các ứng dụng web ASP.NET Core 7. Có nhiều lý do tại sao bạn có thể muốn sử dụng in-memory database. Giả sử bạn đang phát triển một tính năng mới và muốn thử nghiệm tính năng đó mà không ảnh hưởng đến database của mình. Hoặc đơn giản là bạn muốn viết ví dụ và không cần phải xóa database vừa tạo. Ý tưởng Có quá nhiều thứ để implement, nào là Repository, nào là EF Core, rồi thêm Swagger nữa. Để bắt đầu đơn giản nhất, chúng ta sẽ lần lượt thực hiện các bước sau: Tạo Model class: Author và Book 2 model này đại diện cho 2 entity mà chúng ta sẽ khai báo trong Entity Framework Cài đặt package EF Core InMemory NuGet. Tạo DbContext class Khai báo Repository class: IAuthorRepository và AuthorRepository Khai báo Dependency Injection Cài đặt và khai báo Swagger Khai báo Controller   Khai báo ...

Hỗ trợ search tiếng Việt trong SQL Server

Hôm nay mình hướng dẫn mọi người thủ thuật tìm kiếm với Sql Server không phân biệt chữ hoa, chữ thường, có dấu, không dấu rất đơn giản. Mặc định khi tạo 1 column có kiểu dữ liệu nvarchar, thì Collation sẽ có giá trị  SQL_Latin1_General_CP1_CI_AS . Giải thích: SQL – Tất cả các collation đều có tiền tố là SQL. Latin1_General – đại diện cho quy tắc sắp xếp, CI có nghĩa là không phân biệt chữ hoa chữ thường và AS có nghĩa là trọng âm. Để biết được SQL Server của bạn đang hỗ trợ collation nào, bạn thực hiện câu lệnh: SELECT SERVERPROPERTY('collation') Liệt kê collation của các column trong 1 table sp_help <table-name> Đối với tiếng Anh, thì bạn sẽ không gặp vấn đề gì. Nhưng với tiếng Việt, thì bạn sẽ gặp vấn đề về dấu. VD: Bạn tìm kiếm chữ "Châu". Nếu bạn gõ chữ "Châu" hay "Chau" thì sẽ ra 2 kết quả tìm kiếm khác nhau. Khắc phục Bạn execute câu lệnh sql sau: ALTER TABLE <table-name> ALTER COLUMN <column-name> nvar...

Entity Framework Core: Sử dụng Migrations

Trong bài viết này, mình sẽ hướng dẫn các bạn sử dụng tính năng EF Core migration để quản lý sự thay đổi của model và cập nhật database. Để tìm hiểu thêm về CodeFirst Migration, bạn tham khảo bài viết: Tìm hiểu về Code First and Migration

Tìm hiểu về Code First and Migration

Khi làm việc với Entity Framework, bạn có rất nhiều sự lựa chọn để tiếp cận và giải quyết vấn đề. Bạn có thể sử dụng mô hình Database First, Model First hoặc Code First. Với 2 mô hình đầu, bạn sẽ tiếp cận theo hướng Database nhiều hơn, và việc cập nhật Model sẽ rất dễ dàng thông qua câu lệnh “Update Model from Database”. Với Code First, bạn sẽ rất vất vả vì phải định nghĩa POCO class. Không sao, đã có EF Power Tools hỗ trợ nếu bạn có sẵn database. Một cái lợi thứ 2 là bạn dễ dàng nâng cấp hoặc hạ cấp phiên bản database đang sử dụng. Một cái lợi thứ 3 nữa là 1 ngày đẹp trời nào đó, bạn không thích dùng Entity Framework, và chuyển sang MongoDb hoặc Peta POCO... Hiii, bạn đã có class thuần.

Lỗi Connection string khi dùng EF Code First với Sql Compact Edtion

Để lấy chuỗi Connection String, một trong những câu lệnh quen thuộc là: return ConfigurationManager .ConnectionStrings[ "FormAuthentication" ].ConnectionString; Khi dùng với SQL Compact, bạn gặp lỗi: A network-related or instance-specific error occurred while establishing a connection to SQL Server. The server was not found or was not accessible. Verify that the instance name is correct and that SQL Server is configured to allow remote connections. (provider: SQL Network Interfaces, error: 26 - Error Locating Server/Instance Specified) 

Entity Framework: Một số lưu ý khi sử dụng mô hình CodeFirst

Không sử dụng được SQL Compact 4.0 trở xuống. Bạn có thể gặp lỗi: Server-generated keys and server-generated values are not supported by SQL Server Compact   Connection String: Kết nối với SQL Server: <add name=" Your Connection String Name " connectionString="Data Source=.;Initial Catalog=YourDatabaseName;User Id=sa;Password=YourPassword;" providerName="System.Data.SqlClient" />  Kết nối với SQL Compact (4.0): <add name=" Your Connection String Name " connectionString="Data Source=|DataDirectory|\Database\Database.sdf;" providerName="System.Data.SqlServerCe.4.0" /> Tên bảng CSDL: Thêm s ở cuối mỗi bảng. Quy tắc thêm s dựa vào quy tắc tiếng Anh. Ví dụ: Bạn có đối tượng Company, thì bạn sẽ tạo bảng Companies.

Tùy chỉnh quá trình SaveChanges() trong Entity Framework

Bạn thường thêm hay chỉnh sửa 1 object rồi dùng lệnh SaveChanges() để lưu xuống database. Nhưng giả sử có 1 trường dữ liệu nào đó mà bạn muốn kiểm tra hay tự động gán giá trị vào, bạn sẽ làm thế nào. Ví dụ: Bạn muốn thêm sửa xóa dữ liệu trong db và tự động lưu lại ngày tháng đã chỉnh sửa. Phải làm thế nào? Có 2 cách: Bạn viết ở tầng Service, mỗi lần tạo hay thêm object, gọi hàm thêm ngày tháng. Bạn can thiệp vào quá trình lưu xuống db của Entiy Framework. Mình sẽ trình bày cách 2.