2011-06-13 4 views
46

Я продолжаю слышать о Entity Framework fluent-api, но я изо всех сил стараюсь найти хорошую ссылку на это. Что это?Что такое инфраструктура Entity Framework?

Мы используем структуру сущности и предоставленный инструмент моделирования. Это все? Или это что-то другое?

Аналогичным образом, если вопрос не слишком широк, что такое POCO? Я знаю, что это означает Plain Old CLR Objects, но что это значит для меня, как для тех, кто использует EF уже с помощью инструмента модели дизайнера? Если этот вопрос слишком расплывчатый, пожалуйста, проигнорируйте его. Я просто изучаю здесь, и любая информация, которую вы готовы предоставить, полезна.

ответ

50

В Entity Framework 4.1 вводится первый подход к написанию моделей баз данных. Это также называется POCO (обычные объекты CLR). Идея состоит в том, что вы можете создавать свою базу данных из этих классов, а не сначала создавать базу данных и создавать из нее модель.

Есть много хороших статей в блогах и документации 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». Вы можете также объявить ПК, как это:

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

Атрибут [Key] происходит от Data Annotations

+2

Джейсон, я упускаю что-то большое, если я решил использовать аннотации данных вместо того, чтобы свободно апи.Я только начинаю с MVC, и эта тема для меня большая. – Crismogram

+4

Я не верю, что вы упускаете. Но я бы сказал, что использование свободного API означает, что вы можете поместить все настройки базы данных в один метод, а не распространять эту настройку вокруг атрибутов, связанных с разными классами. Так что это случай, который вы предпочитаете на самом деле. –

0

В ответ на ваш вопрос POCO: в заявке я в настоящее время работает над я использую POCO, чтобы передать данные мой передний край Silverlight (EF просто не режут его). По сути, я использую сущности, созданные создателем EF, массируя их в сериализуемую версию, а затем отправляю их туда и обратно по проводу. POCO там должны обеспечить слой абстракции, когда это необходимо. Я рассматриваю это как адаптацию шаблона DAO к сериализации, вместо того, чтобы использовать его для доступа к БД, как это обычно делает шаблон DAO.

0

Смотрите параграф о классах POCO в http://www.asp.net/entity-framework/tutorials/creating-an-entity-framework-data-model-for-an-asp-net-mvc-application

По существу, в контексте EF, классы POCO классы сущностей, которые не наследуют от класса Entity Framework EntityObject (который является то, что вы получаете по умолчанию в базе данных First или первой модели). Как упоминается в одном из других ответов, это упрощает сериализацию объектов, но также некоторые методологии разработки и автоматизированного тестирования предпочитают работать с объектами, которые не имеют ссылки на Entity Framework.

Смежные вопросы