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

  • 相关阅读:
    cocos2dx 2.0 学习笔记简单动画
    几种插入数据的方法
    c#中如何获取本机用户名、MAC地址、IP地址、硬盘ID、CPU序列号、系统名称、物理内存
    C#高效编程改进C#代码的50个行之有效的办法摘抄笔记
    获取两个日期之间的每一天
    取SQL中某个字段的后两位
    该行已经属于另一个表 的解决办法
    一个实体对象不能由多个 IEntityChangeTracker 实例引用
    MVC返回JSON,IE下无法接收JSON,IE下JSON提示另存为
    entity framework DbContext Attach判断
  • 原文地址:https://www.cnblogs.com/yuhanzhong/p/2335528.html
Copyright © 2011-2022 走看看