Đề Xuất 12/2021 # Quy Ước (Convention) Trong Entity Framework Code # Top Like

Xem 13,365

Cập nhật nội dung chi tiết về Quy Ước (Convention) Trong Entity Framework Code mới nhất ngày 04/12/2021 trên website Longbienfestival.com. Hy vọng thông tin trong bài viết sẽ đáp ứng được nhu cầu ngoài mong đợi của bạn, chúng tôi sẽ làm việc thường xuyên để cập nhật nội dung mới nhằm giúp bạn nhận được thông tin nhanh chóng và chính xác nhất. Cho đến nay, bài viết này đã thu hút được 13,365 lượt xem.

--- Bài mới hơn ---

  • Code First Trong Entity Framework
  • Hướng Dẫn Fix Lỗi Iphone Lock Trên Ios 9 Và Ios 10
  • Fix Lỗi Iphone Lock Nhật Ios 10.x
  • Hướng Dẫn Cách Chơi Chứng Khoán Cho Người Mới (2021)
  • Cách Chọn Dàn Karaoke Hát Trên Youtube Chuẩn Nhất
  • Như bạn đã biết trong bài trước, Entity Framework code-first có khả năng tự động tạo cơ sở dữ liệu và bảng dữ liệu từ class C#. Người lập trình hầu như không cần can thiệp vào quá trình này.

    Để thực hiện quá trình tự động đó, Entity Framework sử dụng cơ chế “cấu hình dựa trên quy ước” (configuration over convention). Theo cơ chế này, nếu bạn sử dụng một số lối viết (ví dụ, cách đặt tên) theo quy ước của Entity Framework, bạn sẽ không cần tự mình cấu hình. Entity Framework sẽ sử dụng quy ước đó để tự động cấu hình.

    Ngoài ra Entity Framework cung cấp hai phương pháp khác để thực hiện cấu hình “thủ công”: (1) dùng data annotation attribute; (2) sử dụng fluent API qua class DbModelBuilder.

    Trong bài học này, chúng ta sẽ cùng xem xét các quy ước cơ bản nhất của code-first dùng trong quá trình ánh xạ class (và các property) thành bảng (và cột) CSDL. Hai phương pháp cấu hình còn lại sẽ được xem xét trong từng bài học riêng.

    Các quy ước cơ bản trong Entity Framework

    Domain class, bảng CSDL và schema

    Entity Framework tự động “pluralize” tên class để làm tên bảng dữ liệu. “Pluralize” tuân thủ quy tắc chuyển danh từ sang số nhiều của tiếng Anh. Nếu bạn đặt tên bằng ngôn ngữ khác, pluralize chỉ đơn giản là thêm “s” vào sau tên class để tạo thành tên bảng.

    Ví dụ, nếu class có tên là Person thì Entity Framework sẽ ánh xạ nó thành bảng People.

    Mặc định, Entity Framework luôn tạo bảng dữ liệu trong schema dbo. Nếu muốn tạo bảng trong schema khác, bạn sử dụng attribute Table.

    Nếu muốn đặt tên bảng và schema không theo quy tắc trên, bạn có thể sử dụng attribute Table hoặc phương thức ToTable của fluent API.

    Tên khóa chính

    Ví dụ, với class Person thì tên khóa chính là Id hoặc PersonId.

    Property và cột CSDL

    Mặc định Entity Framework sẽ ánh xạ tất cả property của domain class thành các cột của bảng CSDL.

    Tên property của class được sử dụng làm tên cột của bảng CSDL.

    Thứ tự của cột trong bảng CSDL giống như thứ tự của property đó trong class.

    Kiểu của property được ánh xạ thành kiểu của SQL Server theo bảng quy tắc bạn sẽ xem ở phần tiếp theo của bài học.

    Nếu property thuộc kiểu reference hoặc nullable, cột tương ứng của nó được đánh dấu NULL (cho phép để trống không chứa giá trị). Nếu property thuộc kiểu value, nó sẽ ánh xạ sang cột NotNull (bắt buộc phải có giá trị).

    Ánh xạ kiểu của Property sang kiểu của cột

    Kiểu của .NET và kiểu của SQL Server

    Entity Framework code-first chia các property của model class thành hai loại: simple property (thuộc tính đơn giản) và complex property (thuộc tính phức tạp).

    Thuộc tính đơn giản là những thuộc tính có kiểu cơ bản trong .NET mà có thể trực tiếp ánh xạ sang kiểu của SQL. Thuộc tính phức tạp có kiểu là các struct hoặc class do người dùng tự định nghĩa. Hai loại property này có cách thức ánh xạ sang CSDL khác nhau.

    Do có sự vênh nhau giữa kiểu dữ liệu của .NET và SQL Server, Entity Framework cố gắng giải quyết vấn đề này bằng cách đưa ra một bảng ánh xạ giữa chúng. Nắm được vấn đề này sẽ giúp bạn kiểm soát tốt hơn quá trình xây dựng class model.

    Các property có kiểu nằm trong danh sách trên được xem là “đơn giản”, nhằm phân biệt với các property có kiểu phức tạp (complex type property) sẽ xem xét ở một bài học riêng.

    Vấn đề khó khăn trong ánh xạ kiểu

    Đối với mỗi kiểu dữ liệu .NET sẽ có những khó khăn (vênh) riêng khi ánh xạ sang kiểu của SQL Server). Việc quyết định kiểu cụ thể nào của SQL Server khi tạo bảng rất quan trọng vì nó ảnh hưởng trực tiếp đến hiệu suất lưu trữ và tính toán.

    Giả sử trong class của bạn có một thuộc tính kiểu string. Như đã thấy trong bảng ánh xạ trên, string của C# (hay String của .NET) có thể ánh xạ sang nhiều kiểu văn bản khác nhau của Sql Server.

    Tuy nhiên, vấn đề ở chỗ mỗi RDBMS có nhiều cách lưu trữ văn bản khác nhau. Ví dụ, văn bản của các ngôn ngữ khác tiếng anh thường cần lưu trữ ở dạng Unicode (nchar, nvarchar), trong khi văn bản tiếng anh có thể dùng char hoặc varchar. Nếu số lượng ký tự của một cột là không đổi, ví dụ, mã sinh viên, có thể chỉ cần dùng char thay vì varchar.

    Để chỉ định chính xác kiểu cụ thể mình mong muốn, bạn nên sử dụng attribute hoặc fluent API thay vì dựa dẫm vào quy ước.

    Quy ước ánh xạ mặc định

    Xử lý tình huống NULL và NOT NULL

    SQL Server cho phép một trường dữ liệu có thể nhận giá trị null, với ý nghĩa rằng ô tương ứng có thể “không chứa giá trị”. Ví dụ, một trường số nguyên của bảng nếu được đánh dấu “null” (đặt từ khóa NULL sau khai báo của trường), ô tương ứng của nó có thể không chứa giá trị.

    Entity Framework quyết định xem một trường liệu có thể NULL dựa trên kiểu của property.

    Đối với các kiểu reference type (như string), biến của chúng có thể nhận giá trị null. Do đó, trường tương ứng của bảng tự động được đánh dấu NULL.

    Đối với kiểu value type (int, bool, double, DateTime, v.v.), biến của chúng không thể nhận giá trị null. Do đó, trường tương ứng của bảng không được đánh dấu NULL.

    Các kiểu dữ liệu của .NET được phân làm hai loại: value type, reference type. Enum, struct thuộc value type; class, interface, delegate thuộc reference type.

    Để tương thích với các trường NULL của SQL Server, .NET sử dụng các nullable type để thể hiện những tình huống tương tự. Nullable type cho phép một biến thuộc các kiểu value type (như int, bool, char, v.v.) có thể nhận giá trị null, tức là trạng thái “không có giá trị”.

    Khi cấu hình entity class, bạn có thể cho phép một trường tương ứng của property (kiểu nullable type) nhận giá trị null bằng cách đặt thêm dấu hỏi chấm ? phía sau tên kiểu. Cách viết này yêu cầu Entity Framework đánh dấu trường tương ứng trong bảng là NULL.

    Convention: ký tự ? đứng sau tên kiểu (value type) cho phép trường tương ứng nhận giá trị null.

    Ví dụ:

    public DateTime? BirthDate { get; set; } public int? Age { get; set; }

    Khi này, trường BirthDate và Age tương ứng của bảng dữ liệu sẽ được đánh dấu “NULL”, tức là có thể không chứa dữ liệu. Khi đó, BirthDate và Age của entity nhận giá trị null tương ứng.

    Bài học này đã cung cấp cho bạn những nội dung cơ bản về quy ước cấu hình trong Entity Framework code-first. Bạn cũng nắm được cách thức chung để ánh xạ kiểu của C# (và .NET) sang kiểu của SQL Server.

    Bạn có thể thấy các quy ước này rất đơn giản và khá tự nhiên. Bạn sẽ không gặp khó khăn gì khi khi nhớ và làm việc với nó. Đây cũng là cách thức đơn giản nhất để làm việc với Entity Framework qua tiếp cận code-first.

    Trong các bài học tiếp theo bạn sẽ lần lượt đi vào cách thức cấu hình thủ công với annotation attribute hoặc fluent API để có thể kiểm soát tốt hơn quá trình ánh xạ này.

    * Bản quyền bài viết thuộc về Tự học ICT. Đề nghị tôn trọng bản quyền.

    --- Bài cũ hơn ---

  • Entity Framework Code First Toàn Tập
  • Du Lịch Đài Loan: Cẩm Nang Từ A Đến Z
  • Hướng Dẫn Xin Visa Du Lịch Đài Loan Online (Giấy Phép Nhập Cảnh) Trong 15 Phút
  • Du Lịch Đài Loan Taiwan
  • Hướng Dẫn Xin Visa Du Lịch Đài Loan Tự Túc.
  • Bạn đang đọc nội dung bài viết Quy Ước (Convention) Trong Entity Framework Code trên website Longbienfestival.com. Hy vọng một phần nào đó những thông tin mà chúng tôi đã cung cấp là rất hữu ích với bạn. Nếu nội dung bài viết hay, ý nghĩa bạn hãy chia sẻ với bạn bè của mình và luôn theo dõi, ủng hộ chúng tôi để cập nhật những thông tin mới nhất. Chúc bạn một ngày tốt lành!

  • Web hay
  • Guest-posts
  • Chủ đề top 10
  • Chủ đề top 20
  • Chủ đề top 30
  • Chủ đề top 40
  • Chủ đề top 50
  • Chủ đề top 60
  • Chủ đề top 70
  • Chủ đề top 80
  • Chủ đề top 90
  • Chủ đề top 100
  • Bài viết top 10
  • Bài viết top 20
  • Bài viết top 30
  • Bài viết top 40
  • Bài viết top 50
  • Bài viết top 60
  • Bài viết top 70
  • Bài viết top 80
  • Bài viết top 90
  • Bài viết top 100