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

  • 相关阅读:
    element ui 权限 全选和半选
    div 内容垂直居中
    ajax 传递list2
    mysql学习03-sql执行加载顺序
    mysql学习02-mysql存储引擎(InnoDB,MyISAM)
    mysql学习01-mysql架构
    没有项目的源码,在eclipse下进行tomcat的远程调试,小计一下。
    win10系统,使用SangforHelperTool诊断工具进行修复时,无法安装虚拟网卡。
    postman在有登录认证的情况下进行接口测试!!!
    MongoDB4.0及以上的版本安装时无法启动服务。
  • 原文地址:https://www.cnblogs.com/yuhanzhong/p/2335528.html
Copyright © 2020-2023  润新知