Что такое инфраструктура Entity Framework? - программирование
Подтвердить что ты не робот

Что такое инфраструктура Entity Framework?

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

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

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

4b9b3361

Ответ 1

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". Вы также можете объявить PK следующим образом:

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

Атрибут [Key] исходит из Аннотации данных

Ответ 2

POCO означает обычный объект CLR.

Статья о Fluent API.

Ответ 4

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

Ответ 5

См. параграф на классах 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 (это то, что вы получаете по умолчанию в Database First или Model First). Как упоминается в одном из других ответов, это упрощает сериализацию объектов, но также некоторые методологии разработки и автоматизированного тестирования предпочитают работать с объектами, которые не имеют ссылки на Entity Framework.