



















Preview text:
lOMoAR cPSD| 58728417
Tổng quan kiến trúc của Entity Framework
ADO.NET Entity Framework là một nền tảng được sử dụng để làm việc với database thông qua cơ
chế ánh xạ Object/Relational Mapping (ORM). Nhờ đó, bạn có thể truy vấn, thao tác với database gián
tiếp thông qua các đối tượng lập trình.
Kiến trúc của Entity Framework được minh họa như sau:
Các nội dung dưới đây sẽ đi vào giải thích từng phần trong sơ đồ trên. Trong giới hạn của bài viết, tôi
chỉ đi khái quát để bạn nắm được nội dung chính. Trong thực tế, bạn cũng không cần biết sâu hơn về
kiến trúc bên dưới trừ những mục đích đặc biệt. Object Services
Đây là các class tự động sinh ra tương ứng với mô hình dữ liệu. Các class này bao gồm: -
ObjectContext đại diện cho một database. ObjectContext có chức năng quản lý các kết nối,
định nghĩa mô hình dữ liệu với metadata và thao tác với database. Lớp này cũng có thể thêm vào các
phương thức đại diện cho các stored procedure trong database. -
ObjectSet là một một tập hợp các entity. Mỗi đối tượng này tương ứng với một
table. Có thể lấy được các đối tượng này thông qua các property tương ứng của ObjectContext. -
EntityObject, ComplexObject là các lớp tương ứng cho một dòng dữ liệu của table trong
database. Khác biệt chính giữa hai loại này là ComplexObject không chứa primary key. -
EntityCollection và EntityReference: là các đối tượng thể hiện mối quan
hệ (relationship) giữa hai entity class. Mỗi đối tượng này có thể được truy xuất thông qua các property của entity class. lOMoAR cPSD| 58728417
Ta có bảng ánh xạ tương đương sau giữa các đối tượng trong database và EF: Database Object Entity Framework Object Database ObjectContext Table, View EntityObject, ComplexObject Column Property Relationship EntityCollection , EntityReference
Ví dụ sau cho thấy cách tạo một đối tượng ObjectContext từ mô hình dữ liệu NorthwindEntities (tên
của connection string được lưu trong app.config), sau đó sử dụng LINQ to Entities để lấy ra các sản
phẩm (trong bảng Products) có tên bắt đầu bằng “G” và in ra màn: 01// …
02ObjectContext context = new ObjectContext("name=NorthwindEntities"); 03
04ObjectSet products = context.CreateObjectSet(); 05
06var query = from p in products 07
where p.ProductName.StartsWith("g") 08 select p; 09 10foreach (var item in query) 11{
12 Console.WriteLine("{0,-4}{1}",item.ProductID, item.ProductName); 13} 14// … Output:
6 Grandma's Boysenberry Spread 15 Genen Shouyu 22 Gustaf's Knäckebröd 24 Guaraná Fantástica 26 Gumbär Gummibärchen 31 Gorgonzola Telino 33 Geitost 37 Gravad lax 44 Gula Malacca 56 Gnocchi di nonna Alice 69 Gudbrandsdalsost lOMoAR cPSD| 58728417 Entity Data Model
Entity Data Model (EDM) là mô hình dữ liệu được mô tả thông qua các ngôn ngữ theo chuẩn XML.
EDM được chia làm 3 lớp là: Conceptual, Mapping và Logical. Mỗi lớp này được định nghĩa bởi ngôn
ngữ riêng theo định dạng XML: -
Conceptual – Conceptual Schema Definition Language (CSDL): là ngôn ngữ định nghĩa
các entity, relationship, hàm trong tập tin với phần mở rộng .csdl. Có thể tạo được các entity class (object layer). -
Mapping – Mapping specification language (MSL): định nghĩa các ánh xạ giữa lớp
conceptual và logical, nội dung này được lưu trong tập tin .msl. -
Logical – Store Schema Definition Language (SSDL): định nghĩa mô hình lưu trữ của dữ
liệu, lưu trữ trong tập tin .ssdl.
Tham khảo thêm: CSDL, SSDL, and MSL Specifications
Các nội dung của ba tập tin .csdl, .msl và .ssdl được lưu trữ trong cùng tập tin .edmx trong Visual
Studio. Tập tin này có thể được tạo ra tự động từ database và công cụ Entity Framework Model Wizard
của Visual Studio. Trong quá trình biên dịch, các tập tin .csdl, .msl và .ssdl sẽ được tạo ra dựa vào tập tin .edmx này.
Note: Khi mở tập tin .edmx này, VS tự động hiển thị giao diện trực quan của nó bằng công cụ mặc
định là ADO.NET Entity Data Model Designer. Để xem nội dung của tập tin này, bạn nhấn chuột phải,
nhấn Open with… và chọn mục XML Editor hoặc một trình xem dưới dạng văn bản bất kì. EntityClient Data Provider
EntityClient là một data provider mới của ADO.NET dùng để truy xuất đến database. Được xây dựng
bên trên các ADO.NET data provider cơ bản, EntityClient không truy xuất trực tiếp dữ liệu mà thông
qua các data provider khác dựa vào các thông tin dữ liệu từ Entity Data Model.
EntityClient cũng bao gồm các lớp giống như các ADO.NET data provider khác và tên lớp được đặt
với tiền tố Entity. Ví dụ bạn có thể tạo kết nối bằng EntityConnection, tạo các câu truy vấn bằng
EntityCommand và đọc kết quả bằng EntityDataReader. lOMoAR cPSD| 58728417
Một điểm khác biệt với các data provider khác là EntityClient sử dụng Entity SQL để truy vấn dữ liệu.
Các lệnh Entity SQL sẽ được chuyển thành một cấu trúc lệnh dạng cây (command tree) và chuyển
xuống cho các data provider khác.
Ví dụ sau sử dụng EntityClient để tạo kết nối, tạo đối tượng EntityCommand và sử dụng tham số để
lấy các sản phẩm có CategoryID là 1: 01int categoryID = 1;
02using (EntityConnection con = new EntityConnection("Name=NorthwindEntities")) 03{ 04 con.Open(); 05
EntityCommand cmd = con.CreateCommand(); cmd.CommandText = "SELECT
VALUE p FROM NorthwindEntities.Products AS p 06 WHERE p.CategoryID = @catId"; 07
cmd.Parameters.AddWithValue("catId", categoryID); EntityDataReader reader = 08
cmd.ExecuteReader(CommandBehavior.SequentialAccess); 09 while (reader.Read()) 10 { 11
var name = reader["ProductName"]; 12
var catId=reader["CategoryID"]; 13
Console.WriteLine("{0,-3}{1}",catId,name); 14 } 15 reader.Close(); 16} 17// ... Output: CategoryID ProductName 1 Chai 1 Chang 1 Guaraná Fantástica 1 Sasquatch Ale 1 Steeleye Stout 1 Côte de Blaye 1 Chartreuse verte 1 Ipoh Coffee 1 Laughing Lumberjack Lager 1 Outback Lager 1 Rhönbräu Klosterbier 1 Lakkalikööri lOMoAR cPSD| 58728417
Thiết kế Entity Data Model – Part 1: Database First
Là thành phần trung gian giữa ứng dụng và database, Entity Data Model (EDM) giúp tạo liên kết và
mô tả giữa nguồn dữ liệu vật lý và các đối tượng bussiness (hay object layer) trong ứng dụng. Dựa
vào sự lựa chọn thành phần nào sẽ được tạo ra trước, một ứng dụng Entity Framework (EF) có thể sử
dụng 1 trong 3 cách tiếp cận: Database First, Model First và Code First.
Các sơ đồ dưới đây minh hoạt mối quan hệ và thứ tự tạo ra giữa các thành phần dữ liệu trong ứng
dụng của Entity Framework. Phần Model tương ứng với tập tin .edmx, Code tương ứng với tập tin
.cs (hoặc .vb nếu bạn dùng VB.NET).
Note: Bạn có thể nhận thấy rằng phần Model luôn được theo sau bởi Code, điều này là nhờ công cụ
Entity Data Model Designer trong Visual tự động tạo ra code tương ứng mỗi khi bạn thực hiện chỉnh sửa tập tin .edmx. Database First:
Đây là cách thông thường và được hỗ trợ từ phiên bản EF 1 trong Visual Studio 2008.
EF sẽ tự động tạo ra data model và các class (object layer) cho bạn từ database có sẵn thông qua
công cụ Entity Data Model Wizard. Bạn có thể thay đổi data model và cập nhật lại vào database.
Đây là cách tiếp cận phổ biến vì cách thực hiện đơn giản, nhanh chóng Model First:
Hướng tiếp cận này được bổ sung từ phiên bản EF 4 trong Visual 2010.
Bạn có thể tạo một data model rỗng bằng công cụ Entity Data Model Designer, khi đó object layer
cũng tự động được sinh ra. Sau khi đã hoàn thành việc thiết kế, bạn có thể sử dụng chức năng Generate
Database from Model để tạo ra các mã DDL (data definition language) dựa trên mã SSDL (Store
Schema Definition Language). Các mã DDL này sẽ được thực thi và lưu thành tập tin .sql. Code First: lOMoAR cPSD| 58728417
Với phiên bản EF 4 bạn cần phải cài thêm thư viện EF Feature CTP (Community Technology Preview)
để sử dụng. Tuy nhiên tính năng này đã được tích hợp vào trong phiên bản EF 4.1 và với phiên bản
VS 2010 hiện tại thì bạn cần phải download để cài đặt thủ công.
Hướng tiếp cận này bỏ qua phần Model (.edmx), bạn có thể thiết kế các class tương ứng với các table
của database mà bạn cần làm việc hoặc muốn tạo ra. Với hướng tiếp cận này, bạn sẽ sử dụng class
DbContext thay vì ObjectContext để thao tác với database. Việc sử dụng Code First đòi hỏi bạn phải
thực hiện các công việc một cách thủ công nhưng bù lại nó linh hoạt và được sử dụng rất phổ biến.
Tạo EDM theo hướng Database First (Step by Step)
Phần này bạn sẽ được hướng dẫn cách tạo một Entity Data Model từng bước dựa vào công cụ Entity
Data Model Designer. Dữ liệu nguồn được sử dụng trong ví dụ là Northwind (download tại
http://www.microsoft.com/download/en/details.aspx?id=23654).
Bước 1: Tạo dự án mới với kiểu là Console Application.
Bước 2: Nhấn Add New Item (Ctrl+Shift+A) trên thanh công cụ và chọn mục ADO.NET Entity Data
Model trong hộp thoại hiện ra. Đặt tên mục sắp thêm vào là NorthwindModel với phần mở rộng mặc
định là .edmx. Nhấn Add.
Bước 3: Cửa sổ Entity Data Model Wizard hiện ra. Bước này để xác định bạn sẽ tạo model từ database
có sẵn hoặc một model rỗng. Bạn để lựa chọn mặc định là Generate from database và nhấn Next. lOMoAR cPSD| 58728417
Bước 4: Bước này bạn cần chọn database nào sẽ sử dụng. Chuỗi kết nối sẽ tự động được sinh trong
phần Entity connection string. Với tùy chọn Save entity connection settings in App.Config, chuỗi kết
nối này sẽ tự động được thêm vào tập tin App.Config, nhờ đó bạn không cần nhớ chuỗi kết nối mà chỉ
cần nhớ tên của kết nối là NorthwindEntities. lOMoAR cPSD| 58728417
Trong trường hợp bạn chưa có sẵn kết nối với database nào, hãy nhấn nút New Connection… Các kết
nối mà bạn đã tạo sẽ hiện ra trong cửa sổ Server Explorer. Nhấn Next.
Bước 5: Lựa chọn các table, view và stored procedure bạn muốn sử dụng. Trong ví dụ này, tôi chỉ sử
dụng ba table là Orders, Order Details và Products.
Sau khi nhấn Finish, tập tin NorthwindModel.edmx sẽ được thêm vào Solution Explorer. Đây là tập
tin có dạng .xml và được mở với trình mặc định ADO.NET Entity Data Model Designer với giao diện
trực quan như hình dưới. Nếu muốn coi nội dung của tập tin này dưới dạng văn bản .xml, bạn nhấn
chuột phải vào tập tin trong Solution Explorer > Open With… và chọn XML Editor. Bạn có thể coi
các thông tin đầy đủ của model trong cửa sổ Model Browser và Mapping Details. lOMoAR cPSD| 58728417
Ngoài tập tin .edmx trên, một tập tin khác cũng được tự động tạo ra là
NorthwindModel.Designer.cs. Tập tin này chứa code C# được sinh ra cho các class bạn sẽ sử dụng
trực tiếp khi lập trình. Các class này được gọi là Object Layer (là phần Object Services trong kiến trúc của Entity Framework).
Khảo sát tập tin này, bạn sẽ thấy nó bao gồm các class là: NorthwindEntities, Order, Order_Detail và
Product. Trong đó, class NorthwindEntities chính là class thừa kế từ ObjectContext mà bạn cần sử
dụng để tạo kết nối và thao tác với database.
Kiểm tra kết quả với LINQ to Entities
Việc sử dụng LINQ to Entities rất đơn giản, tương tự như LINQ to SQL. Bạn chỉ cần làm việc với các
class của object layer và property của chúng. Ví dụ sau in ra các sản phẩm có CategoryID là 1 trong bảng Products: lOMoAR cPSD| 58728417 01// ...
02NorthwindEntities db = new NorthwindEntities(); 03
04var query = from p in db.Products 05 where p.CategoryID == 1 06 select p.ProductName; 07 08foreach (var item in query) 09{ 10 Console.WriteLine(item); 11} 12// ... Output: Chai Chang Guaraná Fantástica Sasquatch Ale Steeleye Stout Côte de Blaye Chartreuse verte Ipoh Coffee Laughing Lumberjack Lager Outback Lager Rhönbräu Klosterbier Lakkalikööri
————————————-
Thiết kế Entity Data Model – Part 2: Model First
Tiếp theo phần 1 về Databate First, bài viết này sẽ trình bày về cách tạo Entity Data Model (EDM)
theo hướng Model First. Dựa vào tính năng này, bạn có thể thiết kế được một database thông qua giao
diện trực quan của Entity Data Model Designer trong Visual Studio.
Thiết kế Entity Data Model
Việc thiết kế EDM theo hướng Model First có thể coi là một bài tập tạo một EDM thủ công bằng công
cụ Entity Data Model Designer. Việc thiết kế bằng công cụ không khó nếu như bạn đã quen thuộc với
Visual Studio và từng làm việc các loại database.
Đầu tiên, bạn cần thêm một phần tử ADO.NET Entity Data Model vào dự án (Add New Item…).
Trong cửa sổ Entity Data Model Wizard hiện ra, chọn Empty model, sau đó nhấn Finish. lOMoAR cPSD| 58728417
Sau khi thêm vào, tập tin .edmx sẽ được thêm vào trong Solution Explorer và tự động được mở ra với
công cụ Entity Data Model Designer. Tuy nhiên bởi vì là một model rỗng, bạn cần dùng các mục trong
Toolbox hoặc menu ngữ cảnh để tạo ra các entity và mối liên hệ giữa chúng.
Trong ví dụ này tôi tạo ba entity là: Person, Author và Book. Ngoài ra tôi tạo thêm một complex type
là PersonInfo với hai property là Address và Phone đều có kiểu dữ liệu là String.
Nếu bạn cảm thấy khó khăn khi làm quen với Entity Data Model Designer, hãy đọc một số hướng dẫn dưới đây. -
Tạo một complex type bằng cách nhấn phải vào vùng trống chọn Add>Complex Type. Một
mụcmới sẽ được thêm vào trong mục Complex Types ở cửa sổ Model Browser. Hãy đặt tên cho
complex type này và nhấn phải vào đó thể thêm các property cần thiết. -
Để thêm một property vào entity, nhấn phải vào entity chọn Add>Scalar Property hoặc
Add>Complex Property. Sau đó bạn có thể chọn kiểu dữ liệu trong cửa sổ Properties. lOMoAR cPSD| 58728417 -
Tạo mối liên hệ (relationship) giữa các entity bằng cách dùng Association trên Toolbox hoặc
nhấn phải vào entity chọn Add>Association. Sau khi tạo, hai navigation property tương ứng sẽ xuất
hiện trong mỗi entity. Các navigation property này giúp cho các đối tượng entity có tham chiếu đến
nhau dễ dàng hơn trong quá trình sử dụng. -
Việc tạo một mối liên hệ thừa kế (inheritance) tương tự như tạo association. Khi tạo một thừa
kế (inheritance) giữa hai entity, entity con sẽ được thừa hưởng tất cả property của entity cha. Điều này
tương ứng với mối quan hệ 1-1 trong database.
Sau khi tạo, tôi có được một model như sau:
Tạo database từ Entity Data Model
Sau khi hoàn thành việc thiết kế model (tập tin .edmx), bạn hãy nhấn phải vào vùng trống của Entity
Data Model Designer và chọn Generate Database from Model… Trong cửa sổ Generate Database
Wizard hiện ra, bạn có thể lựa chọn một database có sẵn để thêm các table mới vào. Tuy nhiên tôi sẽ
tạo ra một database mới bằng cách nhấn vào New Connection. Trong cửa sổ Connection Properties,
tôi sử dụng Data source là Microsoft SQL Server, chọn Server name và nhập database name bất kì, ở
đây tôi đặt là Test. Nhấn OK. lOMoAR cPSD| 58728417
Bởi vì server tôi chọn chưa có database Test, một hộp thoại xác nhận hiện ra yêu cầu tạo database này.
Hãy nhấn OK để tiếp tục.
Trong cửa sổ wizard, nhấn Next và bạn sẽ thấy các mã DDL sẽ được tạo ra và lưu trong tập tin
Model1.edmx.sql. Nhấn Finish và tập tin .sql này sẽ được mở ra. Bạn có thể thấy rằng các tên table
sắp được tạo ra được tự động chuyển về dạng số nhiều dựa vào tên của entity. Trong trường hợp này
là entity Person sẽ được chuyển thành table People. lOMoAR cPSD| 58728417
Bạn có thể chỉnh sửa lại nội dung để phù hợp hơn. Tuy nhiên, bạn cũng cần phải sửa lại các ánh xạ
trong tập tin .edmx cho phù hợp. Nếu không cần thiết, bạn hãy bỏ qua việc chỉnh sửa này.
Ví dụ tôi sửa tên các field của table People là Info_Address thành Address và Info_Phone thành Phone.
Sau đó mở tập tin .edmx với XML Editor và chỉnh sửa lại các tên này tương ứng như trên. Có thể sử
dụng chức năng Find and Replace.
Sau khi chỉnh sửa, hãy kiểm tra lại nội dung của nó bằng cách dùng chức năng Validate SQL Syntax.
Nếu chưa kết nối, cửa sổ Connect to Database Engine của SQL Server sẽ hiện ra để yêu cầu kết nối.
Nhấn Connect để tiếp tục. lOMoAR cPSD| 58728417
Sau khi kết nối, các mã sql của tập tin này sẽ được thực thi bằng cách nhấn phải vào cửa sổ soạn thảo
hiện tại chọn Execute SQL. Nếu thấy thông điệp “Command(s) completed successfully.” hiện ra ở
cửa sổ bên dưới là đã thành công.
Bạn có thể mở SQL Management Studio lên để kiểm tra database này, mô hình của database này có dạng như hình dưới. lOMoAR cPSD| 58728417
Kiểm tra kết quả: Thêm dữ liệu vào table People
Mở tập tin App.Config bạn có thể thấy chuỗi kết nối được thêm vào với tên mặc định trùng với tên
của lớp context là Model1Container (thừa kế từ ObjectContext). Ta sẽ tạo một thể hiện của
Model1Container để thêm một đối tượng Author vào database.
Vì Author được thừa kế từ Person, Model1Container chỉ cung cấp duy nhất một phương thức
static void Main(string[] args) {
Model1Container db = new Model1Container();
PersonInfo info=new PersonInfo(){ Address="123 HCM City", Phone="00-123-456"};
Author a = new Author() {Name="Yin Yang", Email = "yinyang.itATgmailDOTcom" };
a.Info = info; db.AddToPeople(a); db.SaveChanges();
Console.WriteLine("Entity has been inserted to the database."); Console.Read(); }
Mặc dù chỉ thêm một đối tượng Author, nhưng dữ liệu sẽ được phân chia vào hai table là People và
People_Author trong database. Có thể coi việc tạo hai entity Person và Author là không cần thiết và
có thể nhập lại thành một. Việc tách ra hai entity thế này chỉ cần khi bạn có nhiều entity cùng thừa kế.
Kết quả trong database sau khi chạy ví dụ trên:
Thiết kế Entity Data Model – Part 3: Code First
Bài này giới thiệu cách sử dụng EF 4.1 để thiết kế Entity Data Model theo hướng Code First. Sử dụng
Code First, bạn phải làm thủ công toàn bộ việc định nghĩa các class của object layer. Nhờ đó bạn sẽ
hiểu sâu hơn cách hoạt động và cấu trúc của các class này. lOMoAR cPSD| 58728417
ADO.NET Entity Framework 4.2
Phiên bản EF 4.1 cung cấp hai tính năng mới: •
The DbContext API is a simplified abstraction over ObjectContext and a number of
other types that were included in previous releases of the ADO.NET Entity Framework.
The DbContext API surface is optimized for common tasks and coding patterns. •
Code First is a new development pattern for the ADO.NET Entity Framework and
provides an alternative to the existing Database First and Model First patterns. Code
First is focused around defining your model using C#/Visual Basic .NET classes, these
classes can then be mapped to an existing database or be used to generate a database
schema. Additional configuration can be supplied using Data Annotations or via a fluent API.
Phiên bản 4.2 vừa được phát hành đầu tháng 11/2011 và sửa một số lỗi của phiên bản EF 4.1. Để cài
đặt EF 4.2, bạn cần dùng đến công cụ Package Manager Console trong Visual Studio. Công cụ được
cung cấp trong menu Tools> Library Package Manager>Package Manager Console.
Khi cửa sổ này được mở ra, tại dấu nhắc dòng lệnh PM>, hãy gõ vào “Install-Package
EntityFramework”, hãy chờ một lúc để chương trình download và cài đặt EF 4.2.
Nếu cần gỡ bỏ, bạn có thể gõ lệnh “Uninstall-Package EntityFramework”. Tạo các entity class
Để sử dụng Code First trong Entity Framework, bạn cần phải thêm tham chiếu đến các assembly cần thiết vào dự án: • EntityFramework •
System.ComponentModel.DataAnnotations • System.Data.Entity lOMoAR cPSD| 58728417
Với phiên bản EF 4.1, bạn có thể thêm các tham chiếu thủ công. Tuy nhiên với EF 4.2, bạn có thể làm
điều này bằng cách cài đặt package EntityFramework.Preview. Bạn thực hiện điều này bằng cách làm theo các bước sau: -
Tạo một dự án với tên EntityFrameworkDemo. -
Vào menu Project>Add Library Package Reference. -
Trong cửa sổ hiện ra, qua thẻ Online và gõ vào textbox tìm kiếm tên của package là
“EntityFramework.Preview”. -
Sau khi tìm được, nhấn Install để tiến hành cài đặt.
Sau đó, bạn có thể tạo các class để thực hiện thao tác với database. Trong ví dụ này tôi sẽ tạo các class cho database như sau: lOMoAR cPSD| 58728417
Các class của object layer, bao gồm một context và các entity được định nghĩa trong C# như sau:
01public class CompanyContext : DbContext 02{ 03
public DbSet Authors { get; set; } 04
public DbSet Articles { get; set; } 05
public DbSet Payrolls { get; set; } 06 07} 08public class Author 09{ 10
public int AuthorId { get; set; } 11
public string Name { get; set; } 12
13 public ICollection Articles { get; set; } 14} 15 16public class Article 17{ 18
public int ArticleId { get; set; } 19
public string Name { get; set; } 20
public int AuthorId { get; set; } 21 lOMoAR cPSD| 58728417
22 public Author Author { get; set; } 23} 24public class Payroll 25{
26 public int PayrollId { get; set; } 27
public int AuthorId { get; set; }
28 public int Salary { get; set; } 29
30 public Author Author { get; set; } 31}
Bổ sung thông tin cho các entity class với Data Annotation
Các field của một table cần phải được xác định các thông tin như kiểu dữ liệu, khóa chính, … Tôi làm
điều này bằng cách dùng các attribute trong System.ComponentModel.DataAnnotations.
Ví dụ trong class Author, tôi xác định AuthorId là khóa chính bằng attribute [Key], và xác định số kí
tự tối đa cho Name là 100 bằng attribute [StringLength]. 1public class Author 2{ 3 [Key] 4
public int AuthorId { get; set; } 5 [StringLength(100)] 6
public string Name { get; set; } 7
8 public ICollection Articles { get; set; } 9}
Danh sách các annotation mà EF hỗ trợ bao gồm: • KeyAttribute • StringLengthAttribute • MaxLengthAttribute • ConcurrencyCheckAttribute • RequiredAttribute • TimestampAttribute • ComplexTypeAttribute • ColumnAttribute
Placed on a property to specify the column name, ordinal & data type • TableAttribute
Placed on a class to specify the table name and schema • InversePropertyAttribute