Entity Framework Feature CTP 4更新了Code First编程模型并提升了生产率

近日,Entity Framework Feature CTP 4发布了,更新了Code First编程模型,增加了新的编码约定与数据注解,同时还新增了两个类型:DbContext与DbSet<TEntity>,可以使用Code First简化实体模型的创建。

Code First

Code First编程模型通过编写类代码来创建模型,与该类关联的实体则包含在模型当中。在使用恰当的编码约定时EF会检测到模型,还可以通过Fluent API或数据注解属性精化这个过程。下面的代码示例展示了数据注解属性的用法:

public class Person {
    [Key]
    public string SSN { get; set; }
    [StringLength(512)]
    public string Name { get; set; }
    [RelatedTo(RelatedProperty=”Author”)]
    public ICollection<Book> Books { get; set; }
}

[Key]注解所指定的属性是实体的主键,[StringLength(512)]指定了字符串属性的最大长度值。EF CTP 4可以识别如下数据注解:Key、StringLength、ConcurrencyCheck、Required、Timestamp、DataMember、RelatedTo、MaxLength及StoreGenerated。

Fluent API的优先级要比数据注解高,而数据注解的优先级要比代码约定高。其他重要的Code First更新有:

  • CTP 4中支持的模型探测约定有:主键、关系反转、外键及多元化的表名
  • 精化了Fluent API方法,直观性更好。Code First Walkthrough中包含了更多的细节信息

生产率的提升

EF CTP 4添加了两个新类型:DbContext与DbSet<TEntity>。DbContext是ObjectContext的简化版本,提供了基本的模型缓存、数据库供应、连接管理及模式创建等功能。代码示例如下所示:

using System.Collections.Generic;

using System.Data.Entity;

namespace MyDataAccessDemo {

   class Program {

      static void Main(string[] args){

         using (var context = new ProductContext()) {

            var food = new Category { CategoryId = "FOOD" };

            context.Categories.Add(food);

            var cheese = new Product { Name = "Cheese" };


            cheese.Category = context.Categories.Find("FOOD");

            context.Products.Add(cheese);

            context.SaveChanges();

         }

      }

   }

 
   public class ProductContext : DbContext {

      public DbSet<Product> Products { get; set; }


      public DbSet<Category> Categories { get; set; }

   }

   
   public class Product {

      public int ProductId { get; set; }

      public string Name { get; set; }

      public Category Category { get; set; }

   }


 
   public class Category{

      public string CategoryId { get; set; }

      public string Name { get; set; }

      public ICollection<Product> Products { get; set; }

   }

}

要想创建实体模型,上面这些代码足矣,它包含了将模型存储到数据库中所需的一切底层信息。

微软并未明确EF 4 RTM的发布时间,只是说“我们正努力工作以期早日发布RTM”。

相关信息:ADO.NET EF CTP 4、EF CTP4 Walkthrough:Code First、Conventions for Code First、Productivity Improvements for the Entity Framework、EF CTP4 Walkthrough:Productivity Improvements。

查看英文原文:EF CTP 4 Brings Code First Updates and Productivity Improvements

你可能感兴趣的:(Entity Framework Feature CTP 4更新了Code First编程模型并提升了生产率)