zoukankan      html  css  js  c++  java
  • Entity Framework 4.1 Code First (1)


    Entity Framework 4.1 RC 數週前已Release,並非是Entity Framework 4.0改版,而是增加新的功能,所以在使用上仍要有 Entity Framework 4.0的觀念

    其中對我個人而言,於由開發的習慣,最感興趣的莫過於Code First ,雖然還有一些功能上不完備,例如對Enum及Stored Procedure 不支援…。

    既然是Code First,當然就是可以直接寫Code,這是不同於Entity Data Model用拖拉的方式產生Entity

    先用一個簡單的範例說明Code First 功能

    1.首先當然給先下載及安裝ADO.NET Entity Framework 4.1 RC

    2.建立一個Department entity

    view sourceprint?
    01 public class Department { 

    02   

    03     public int DepartmentId { get; set; } 

    04   

    05     [Column("DepartmentName")] 

    06     public String Name { get; set; } 

    07   

    08     public String Description { get; set; } 

    09   

    10 }
    [Column("Department")] attribute 是宣告此一property 對應的Table 的欄位名稱是DepartmentName

    Code First 有採用convention方式,property 以Id結尾預設是primary key,也可以用宣告attribute 方式

    view sourceprint?
    1 [Key] 

    2 public int DepartmentId { get; set; }
     

    3.建立一個CompanyDbContext,繼承Dbcontext,使其功能如同扮演著ObjectContext 角色

    view sourceprint?
    1 public class CompanyDbContext : DbContext{ 

    2   

    3         public DbSet<Department> Departments { get; set; } 

    4   

    5         protected override void OnModelCreating(DbModelBuilder modelBuilder) { 

    6             modelBuilder.Entity<Department>().ToTable("Department"); 

    7         } 

    8     }
     

    DbSet<Department> 是 Department Entity Collection

    而OnModelCreating method是可以用來做entity model 的設定,以上面的範例來說,意思是宣告Department 對應的Database 的Department

    當然也可以用attribute註記

    view sourceprint?
    1 [Table("Department")] 

    2 public class Department { 

    3     ..... 

    4 }
     

    4.設定connection string

    在設定的名稱上可以與DbContext相同,例如在web.config內

    <add name="CompanyDbContext" connectionString="Server=xxxxxxxx;Database=CompanyDb;integrated security=true" providerName="System.Data.SqlClient"/>
    也可以對companyDbContext construnctor設定view sourceprint?
    1 public CompanyDbContext(string connString) : base(connString) { }
    5.取出資料與變更資料

    雖然code First 支援由Model 產生 Database,這議題下次再說明,在此就直接假設database 已存在,取得資料的方式就如同Line to entity方式

    view sourceprint?
    1 using(var context = new CompanyDbContext()){ 

    2     var departments = context.Departments.ToList(); 

    3 }
    新增,修改,刪除也幾乎雷同,附上一個用asp.net mvc 呈現資料的範例

    下一次說明1對多與多對多的作法

  • 相关阅读:
    前端开发和网页设计的过去和未来
    Web开发人员vs网页设计师
    Linux最终将会领先于Windows、Mac OS!
    Linux 大爆炸:一个内核,无数发行版
    因PHP漏洞,超过4.5万个中国网站被攻击
    在 Linux 中自动配置 IPv6 地址
    echart-折线图,数据太多想变成鼠标拖动和滚动的效果?以及数据的默认圈圈如何自定义圆圈的样式
    用TweenMax.js动画让数字动起来
    zrender笔记----(数字Number组件)出现的问题和解决办法
    面试题常考&必考之--js中的数组去重和字符串去重
  • 原文地址:https://www.cnblogs.com/yuhanzhong/p/2335528.html
Copyright © 2011-2022 走看看