Что такое инфраструктура Entity Framework?
Я продолжаю слышать о Entity Framework fluent-api, но я изо всех сил стараюсь найти хорошую ссылку на это. Что это?
Мы используем инфраструктуру сущности и инструмент моделирования. Это все? Или это что-то другое?
Аналогично, если это не слишком широкий вопрос, что такое POCO? Я знаю, что это означает Plain Old CLR Objects, но что это значит для меня, как для тех, кто использует EF уже с помощью инструмента модели дизайнера? Если этот вопрос слишком расплывчатый, пожалуйста, проигнорируйте его. Я просто изучаю здесь, и любая информация, которую вы готовы предоставить, полезна.
Ответы
Ответ 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.
Ответ 3
Вы также можете проверить раздел API первого уровня кода на MSDN здесь http://msdn.microsoft.com/en-us/library/hh295844
Ответ 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.