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

原文地址:https://www.cnblogs.com/yuhanzhong/p/2335528.html