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對多與多對多的作法

  • 相关阅读:
    maya软件切换编辑模式FX,Rigging,Animation,Rendering,customize
    关于ueditor1.4.2 与Jquery 验证同时使用失效
    架构师的第二阶段:做(Conceptual-Architecture)
    架构师的第一阶段:准备做(Pre-Architecture)
    新生架构师的首个任务--分阶段!
    新生架构师的困惑
    在Myeclipse上安装hadoop插件,开发MapReduce程序(本人新手,欢迎大家多多指导和关照)
    Hadoop伪分布式搭建(本人新手,欢迎大家多多指导和关照)
    Linux虚拟机的静态网络配置(本人新手,欢迎大家多多指导和关照)
    VMware上安装CentOS系统(本人新手,欢迎大家多多指导和关照)
  • 原文地址:https://www.cnblogs.com/yuhanzhong/p/2335528.html
Copyright © 2011-2022 走看看