)使用EF4.3構造一個清爽的基於POCO的ORM架構

來源:互聯網
上載者:User

原文地址:http://www.cnblogs.com/ejiyuan/archive/2012/02/29/2373683.html

 

      EF正在成為一個優秀的ORM架構,4.1中就加入了Code First,當時帶來的不少的驚喜,可是,4.1時,的Code
First雖然可以不再依賴edmx,可是建立很多的,映射code,雖然這些code有工具可以自動產生,可是仍覺得解決方案混亂。今天感受了一下4.3,他可以不在依賴edmx,不再需要大量的映射code,寫簡單的,連接字串,實現一個清爽的,基於POCO的ORM架構。4.3中好多東西都已被內部封裝了我們只需簡單的調用就好:

1,定義資料操作對象

    /// <summary>
    /// 定義一個DbContext
    /// </summary>
    public class BookContext : DbContext
    {
        public BookContext()
            : base("conString")
        {

        }
        //定義一個DbSet對象映射到實體
        public DbSet<Book> Books
        {
            get;
            set;
        }
    }

複製代碼

2,定義實體物件

    //定義一個實體
    public class Book
    {
        public int BookId { get; set; }
        public string Title { get; set; }
        public double Price { get; set; }
    }

複製代碼

3,修改設定檔,添加一個簡單的連接字串

  <connectionStrings>
    <add name="conString" connectionString="server=.;uid=sa;pwd=123456;database=promise" providerName="System.Data.SqlClient"/>
  </connectionStrings>

複製代碼

4,Test

            using (BookContext bc = new BookContext())
            {
                //查詢
                var list = bc.Set<Book>().ToList();
                //添加
                var obj = new Book() { BookId = 12, Price = 10.1, Title = "其實我是一本書" };
                bc.Books.Add(obj);
                //提交
                bc.SaveChanges();
            }

複製代碼

另外4.3中加入了對System.ComponentModel.DataAnnotations的擴充,只需在實體物件類或欄位上加入相應的標記就可以定義或改變一些映射規則,如:

    //指定映射到資料庫的Books表中
    [System.ComponentModel.DataAnnotations.Table("Books")]
    public class Book
    {
        //指定該為主鍵
        [System.ComponentModel.DataAnnotations.Key()]
        //指定該欄位不為自動編號
        [System.ComponentModel.DataAnnotations.DatabaseGenerated(System.ComponentModel.DataAnnotations.DatabaseGeneratedOption.None)]
        public int BookId { get; set; }
        public string Title { get; set; }
        public double Price { get; set; }
    }

複製代碼

如果你資料中book對應的表主鍵不是自動編號的此標記[System.ComponentModel.DataAnnotations.DatabaseGenerated(System.ComponentModel.DataAnnotations.DatabaseGeneratedOption.None)]

很重要否則無法update資料,另外其中還有大量的 驗證屬性。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.