Основным преимуществом POCO является то, что эти классы могут быть вашими DTO, поэтому, если у вас уже есть пользовательские DTO, которые вы используете, POCO кажется немного избыточным.Однако есть и другие преимущества, которые могут иметь или не иметь ценность для вас, поскольку вы не упомянули модульное тестирование как требование.Если вы планируете писать модульные тесты, то POCO все еще остается в пути.Вы, вероятно, не заметите большой разницы между 4.0 POCO и 4.1, так как вы не будете использовать функцию первого кода (отказ от ответственности: я использовал только 4.0 POCO, поэтому я не очень хорошо знаком с какими-либо незначительными различиямимежду ними, но они кажутся более или менее одинаковыми - в основном я уже использовал POCO в 4.0 и не видел ничего, что заставило бы меня хотеть обновить все для использования 4.1).
Кроме того, в зависимости от того, планируете ли вы выполнить юнит-тестирование этого слоя, все еще имеет значение реализация шаблонов репозитория / единицы работы при использовании Entity Framework.Он служит для отвлечения логики доступа к данным (контекста), а не самих сущностей, и позволяет выполнять такие вещи, как макетирование контекста в модульных тестах.Я копирую шаблон T4 для своего контекста и использую его для создания интерфейса, затем редактирую шаблон T4 для контекста и заставляю его реализовать этот интерфейс и использовать IObjectSet<T>
вместо ObjectSet<T>
.Поэтому вместо:
public class MyEntitiesContext
{
public ObjectSet<MyClass> MyEntities
...
}
я получаю:
public interface IMyEntitiesContext
{
public IObjectSet<MyClass> MyEntities;
}
и
public class MyEntitiesContext : IMyEntitiesContext
{
public IObjectSet<MyClass> MyEntities
...
}
Так что, я думаю, все сводится к тому, планируете вы или нетнаписать модульные тесты для этого слоя.Если вы не будете делать ничего, что потребовало бы макетирования вашего контекста для тестирования, то, вероятно, проще всего было бы использовать 4.0 EntityObjects, поскольку вы не планируете передавать свои сущности между слоями, и для этого потребуется минимум усилий.воплощать в жизнь.Если вы планируете использовать макетирование, то, возможно, вы захотите использовать POCO и внедрить репозиторий / единицу работы.