ORM組件 ELinq (三)-映射配置之Attribute


  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的配置方式有了一個了解:

  1.      TableAttribute:映射表名
  2.      IdAttribute:映射主鍵的, IsDbGenerated=true 屬性標致主鍵是自動增一的
  3.      IgnoreAttribute:忽略映射的
  4.      ColumnAttribute: 映射列的
  5.      AssociationAttribute:映射關系的,一對多,多對一,一對一都用這一個標簽

    下一節將介紹 基於Fluent API的映射方式。

  技術支持:

  1. 官方網站
  2. Nuge 下載頁面
  3. ORM組件 ELinq系列
  4. ORM組件 ELinq 更新日志
  5. ORM組件 ELinq 使用答疑
  6. 在我的博客留言,我會盡可能地抽時間來答復大家的問題。
  7. 加入 ELinq用戶的 QQ群(271342583)。

   謝謝大家的閱讀,麻煩大伙點一下推薦,再次謝謝大家。 ^_^


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM