2011-06-13 616 views
46

我一直听到关于实体框架fluent-api的消息,但我正努力寻找一个很好的参考。它是什么?什么是Entity Framework fluent api?

我们使用实体框架和提供的建模工具。那就是这一切吗?或者它有什么不同?

同样,如果它不是太宽泛的问题,什么是POCO?我知道它代表Plain Old CLR Objects,但对于我来说,对于使用EF的设计师模型工具来说,这意味着什么?如果这个问题太模糊,那么请忽略它。我只是在这里学习,任何你愿意提供的信息都是有帮助的。

回答

50

Entity Framework 4.1引入了编写数据库模型的代码优先方法。这也被称为POCO(Plain Old CLR Objects)。我们的想法是,您可以从这些类构建数据库,而不是先构建数据库并从中创建模型。

有很多关于此的好博客文章和MSDN文档。一个良好的开端是

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]属性来自Data Annotations

+2

杰森,我失去了一些大,如果我决定使用数据注释,而不是流畅的API。我只是从MVC开始,这个话题对我来说是一个更大的曲线。 – Crismogram 2015-03-18 02:14:24

+4

我不相信你错过了。但我会说,使用流畅的API意味着你可以将所有的数据库设置放在一个方法中,而不是将这些设置分散到与不同类相关的属性中。所以这是一个你喜欢的方式。 – 2015-03-18 08:18:09

0

响应您的POCO问题:在我目前正在对我的应用程序中使用POCO的将数据传递给我我的Silverlight前端(EF只是没有切割它)。实质上,我使用EF建模器创建的实体,将它们按顺序化友好版本,然后通过电线来回发送它们。 POCO在那里需要时提供一个抽象层。我认为它是将DAO模式适配为序列化,而不是像DAO模式通常那样将其用于数据库访问。

0

http://www.asp.net/entity-framework/tutorials/creating-an-entity-framework-data-model-for-an-asp-net-mvc-application

本质上POCO类的段落,在EF的背景下,POCO类是不从实体框架EntityObject类继承(这是你默认的数据库首先得到什么实体类或Model First)。正如其他答案中提到的那样,这使序列化对象变得更加容易,但是一些开发和自动化测试方法更喜欢使用没有参考实体框架的对象。

相关问题