2011-06-13 126 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)。正如其他答案中提到的那樣,這使序列化對象變得更加容易,但是一些開發和自動化測試方法更喜歡使用沒有參考實體框架的對象。

相關問題