写点什么

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

  • 2010-07-16
  • 本文字数:1323 字

    阅读完需:约 4 分钟

近日, Entity Framework Feature CTP 4 发布了,更新了 Code First 编程模型,增加了新的编码约定与数据注解,同时还新增了两个类型:DbContext 与 DbSet,可以使用 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。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

2010-07-16 01:292270
用户头像

发布了 88 篇内容, 共 263.1 次阅读, 收获喜欢 8 次。

关注

评论

发布
暂无评论
发现更多内容

软件测试丨学习笔记Allure2报告中添加用例链接、用例分类

测试人

程序员 软件测试 测试开发 测试用例 Allure

高考开始了,计算机专业未来还会火吗?

图灵教育

人工智能 互联网 计算机 GPT

亚信科技AntDB数据库荣获赛宝优选信创优秀解决方案奖

亚信AntDB数据库

AntDB AntDB数据库 企业号 6 月 PK 榜

大学共享电单车合作投放准备工作

共享电单车厂家

共享电动车厂家 共享电单车投放 共享电动车合作 校内共享电动车

对编程语言中错误处理机制的思考

宇宙之一粟

错误处理 6 月 优质更文活动

数智人力:现代企业解决人才短缺的新途径

用友BIP

数智人力

直播预告 | 一体化智能可观测平台如何保障电商节大促

博睿数据

可观测性 智能运维 博睿数据 电商节

【热点追踪】从价值到架构,走近全新升级的阿里云 Serverless 容器服务 ASK

阿里巴巴云原生

阿里云 Serverless 容器 云原生

四川大学向锐:财务职能将逐步从企业内部拓展到生态链、产业链

用友BIP

智能会计 价值财务

为什么 Serverless 能提升资源利用率?

Serverless Devs

Serverless 云原生

【云原生】Docker的基本使用方法与优势

不叫猫先生

Docker 6 月 优质更文活动

中企出海困难重重?海外税务数字化解决方案来支招!

用友BIP

中企出海

一份配置轻松搞定表单渲染,配置式表单渲染器在袋鼠云的实现思路与实践

袋鼠云数栈

大数据 企业号 6 月 PK 榜

云上数据库:从零到壹的实践经验分享

科技热闻

高考开始了,计算机专业未来还会火吗?

图灵社区

人工智能 互联网 计算机 GPT

业内Chromium115内核首发|海泰红莲花国密浏览器极速版V10

电子信息发烧客

数智人力领域的“chat GPT”,让人才发现更简单更智能

用友BIP

数智人力

PCB板的Mark点设计对SMT重要性

华秋PCB

工具 电路 PCB SMT PCB设计

vue2.x与vue3.x中自定义指令详解

不叫猫先生

Vue 自定义指令

Vue3项目中Pinia状态管理工具的使用

不叫猫先生

Vue Pinia 6 月 优质更文活动

GaussDB(DWS)查询过滤器原理与应用

华为云开发者联盟

数据库 华为云 华为云开发者联盟 企业号 6 月 PK 榜

前端内存泄漏详解

不叫猫先生

内存泄露 6 月 优质更文活动

深入理解注解驱动配置与XML配置的融合与区别

华为云开发者联盟

开发 华为云 华为云开发者联盟 企业号 6 月 PK 榜

nvm node版本管理

甜点cc

6 月 优质更文活动

编写脚本配合git hooks实现commitMsg的拼接

甜点cc

6 月 优质更文活动

数字经济快速发展下企业需要什么样的数智平台?

用友BIP

企业数智化 数智平台

聚焦数智人力,让员工“跳槽”不再尴尬!

用友BIP

人力资源 数智人力

苹果WWDC 2023发布会总结

楚少AI

wwdc WWDC 2023 苹果wwdc2023

阿里云丁宇:云上开发成为主流,Serverless 定义新范式

阿里巴巴云原生

阿里云 Serverless 云原生

世界500强企业是如何开展财务共享工作的?

用友BIP

财务共享

活动回顾丨云原生技术实践营深圳站回放 & PPT 下载

阿里巴巴云原生

阿里云 云原生

Entity Framework Feature CTP 4更新了Code First编程模型并提升了生产率_.NET_Abel Avram_InfoQ精选文章