ELinq 發布后,由於公司的項目比較忙,就沒有時間進行撰寫博文進行介紹,望大家見諒,現在元旦了該抽時間把ELinq的系列補充補充,該篇介紹Attribute的映射配置。
Attribute的映射配置方式和LinqToSQL的配置方式類似,不用太多的筆墨進行介紹每個Attribute的含義,直接用代碼說話。 (以Northwind數據庫的Customers表和Orders 表為例,客戶和訂單是一對多關系為例)
[Table(Name = "Customers")] public class Customer { [Id(Name="CustomerId")]//主鍵映射 public string Id; [Column]public string ContactName; [Column]public string CompanyName; [Column]public string City; [Column]public string Country; [Ignore]public string Phone;//忽略,不映射該字段 } [Table(Name = "Orders")] public class Order { [Id(IsDbGenerated = true)]//該主鍵是自動增一 public int OrderID; [Column]public string CustomerID;//外鍵字段 [Column]public DateTime OrderDate; } public class Northwind : DbContext { //連接字符串名稱:基於Config文件中連接字符串的配置 const string connectionStringName = "Northwind"; //構造dbConfiguration 對象 static DbConfiguration dbConfiguration = DbConfiguration .Configure(connectionStringName) .SetSqlLogger(() => new SqlLog(Console.Out)) .AddClass<Customer>() .AddClass<Order>() ; public Northwind() : base(dbConfiguration) { } public readonly IDbSet<Customer> Customers; public readonly IDbSet<Order> Orders; }
這樣就非常簡單的完成了OR映射,看到這里可能有人會問一對多怎么映射,比如Customer實體類里面有多個Order實體?其實也一樣簡單,看代碼
[Table(Name = "Customers")] public class Customer { [Id(Name="CustomerId")]//主鍵映射 public string Id; [Column]public string ContactName; [Column]public string CompanyName; [Column]public string City; [Column]public string Country; [Ignore]public string Phone;//忽略,不映射該字段 //一對多映射,ThisKey:Customer.Id,OtherKey:Order.CustomerID
[Association(ThisKey="Id", OtherKey="CustomerID")]
public IList<Order> Orders; }
既然一對多可以,那么多對一是不是也可以,當然,看代碼
[Table(Name = "Orders")] public class Order { [Id(IsDbGenerated = true)]//該主鍵是自動增一 public int OrderID; [Column]public string CustomerID; [Column]public DateTime OrderDate; //一對多映射,ThisKey:Order.CustomerID,OtherKey:Customer.Id
[Association(ThisKey = "CustomerID", OtherKey = "Id")] public Customer Customer; }
通過上面的例子想必大家對ELinq基於Attribute的配置方式有了一個了解:
- TableAttribute:映射表名
- IdAttribute:映射主鍵的, IsDbGenerated=true 屬性標致主鍵是自動增一的
- IgnoreAttribute:忽略映射的
- ColumnAttribute: 映射列的
- AssociationAttribute:映射關系的,一對多,多對一,一對一都用這一個標簽
下一節將介紹 基於Fluent API的映射方式。
技術支持:
- 官方網站
- Nuge 下載頁面
- ORM組件 ELinq系列
- ORM組件 ELinq 更新日志
- ORM組件 ELinq 使用答疑
- 在我的博客留言,我會盡可能地抽時間來答復大家的問題。
- 加入 ELinq用戶的 QQ群(271342583)。
謝謝大家的閱讀,麻煩大伙點一下推薦,再次謝謝大家。 ^_^