什么是Entity Framework fluent api?

53

我一直听说 Entity Framework 的 Fluent API,但是我很难找到一个好的参考文档。它是什么?

我们使用 Entity Framework 和提供的建模工具。这就是全部吗?还是有其他不同的东西?

类似地,如果问题不太广泛,那么 POCO 是什么?我知道它代表 Plain Old CLR Objects,但作为已经在设计师模型工具中使用 EF 的人,这对我意味着什么?如果这个问题过于含糊,请忽略它。我只是在学习,您提供的任何信息都是有帮助的。

5个回答

58

Entity Framework 4.1 引入了代码优先的方法来编写数据库模型,也叫做 POCO (Plain Old CLR Objects)。其思想是基于这些类来构建数据库,而不是先构建数据库然后从中创建模型。

有大量的博客文章和微软官方文档介绍此功能。一个好的起点是:

http://blogs.msdn.com/b/adonet/archive/2010/12/14/ef-feature-ctp5-fluent-api-samples.aspx

http://weblogs.asp.net/scottgu/archive/2010/12/08/announcing-entity-framework-code-first-ctp5-release.aspx

http://weblogs.asp.net/manavi/archive/2011/03/27/associations-in-ef-4-1-code-first-part-1-introduction-and-basic-concepts.aspx

关于流畅的API,它基本上是使用EF类来构建你的数据库,例如:

modelBuilder.Entity<Category>().HasKey(c => c.CategoryCode);

所以您手动声明Category表具有名为`CategoryCode'的主键。您也可以像这样声明PK:

public class Category
{
    [Key]    
    public int CategoryCode { get; set;}
}

[Key]属性来自数据注解


2
Jason,如果我决定使用数据注释而不是流畅的API,我会错过什么重要的东西吗?我刚开始接触MVC,这个主题对我来说是一个更大的曲线。 - Crismogram
5
我不认为你会错过什么。但是我要说使用流畅的API可以将所有数据库设置放在一个方法中,而不是将这些设置分散在与不同类相关联的属性中。所以这只是取决于你更喜欢哪种方式。 - Jason Evans
@JasonEvans 回答得很好,同样地,我想知道掌控我们数据库的最佳工具是什么,是流畅API还是数据注释?特别是当我们在一个有很多数据库结构更改的大项目上工作时? - Thamer

5

1

0
回答您有关POCO的问题:在我目前工作的应用程序中,我使用POCO将数据传递到我的Silverlight前端(EF并不能胜任)。实质上,我使用EF建模器创建的实体,将它们转换为可序列化版本,然后在网络中传输。需要时使用POCO提供抽象层。我认为这是将DAO模式调整为序列化的一种方式,而不是像DAO模式通常那样用于数据库访问。

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接