Я пишу веб-приложение asp.net mvc 2 с Entity Framework 4.0. У меня есть представления, которые должны отображать элементы, представления для входа и т. Д. Должен ли я структурировать проект с шаблоном репозитория? Если да, то как? Должен ли я создать интерфейс для базовых методов, таких как «Добавить», «Обновить», «Удалить» и т. Д. И другой класс, который использует репозиторий для общих методов, таких как проверка входа и т. Д.?Entity Framework 4.0 с классами POCO - шаблон репозитория?
ответ
Наиболее полный ответ, который вы можете получить, вероятно, здесь:
http://huyrua.wordpress.com/2010/07/13/entity-framework-4-poco-repository-and-specification-pattern/
Довольно много читать и понять, но если вы действительно хотите, чтобы понять, как использовать шаблон репозитория с EF , это, вероятно, самый полный источник.
Некоторые проще образец кода, чтобы получить быстрый старт можно найти здесь:
http://www.forkcan.com/viewcode/166/Generic-Entity-Framework-40-Base-Repository
Вы также можете найти различные вариации + дискуссии (например, является ли это хорошая идея, чтобы вернуть IQueryable's
из хранилища и т.д.
Я использую EF с шаблоном хранилища, он спасает меня ад много работы!
Малый Respository Pattern Введение:
someRepository.Find.Where(something => something.IsRed && something.IsBig)
Создать общий интерфейс под названием «IRepository» типа, содержащего все методы доступа к данным.
Это может выглядеть следующим образом:
interface IRepository<T> where T : class
{
IEnumerable<T> FindAll(Func<T, bool> exp);
T FindSingle(Func<T, bool> exp);
}
Создать абстрактный класс «Repository» реализует этот интерфейс:
class Repository<T> : IRepository<T> where T : class
{
TestDataContext _dataContext = TestDataContext(); // Would be your EF Context
public IEnumerable<T> FindAll(Func<T, bool> exp)
{
_dataContext.GetTable<T>().Where<T>(exp);
}
public T FindSingle(Func<T, bool> exp)
{
_dataContext.GetTable<T>().Single(exp);
}
}
Теперь мы можем создать интерфейс для something
таблицы/объекты, которые реализуют наши «IRepository» и конкретный класс, расширяющий абстрактный класс «Репозиторий» и реализующий «ISomethingInterface»:
interface ISomethingRepository : IRepository<Banner>
{
}
И хранилище соответствия для его реализации:
class SeomthingRepository : Repository<Banner>, IBannerRepository
{
}
Я предложил бы использовать этот подход, поскольку он дает большую гибкость, а также достаточно сил, чтобы контролировать все крошечные объекты у вас есть.
Вызов этих методов будет супер легко, что путь:
SomethingRepository _repo = new SomethingRepository();
_repo.Find.Where(something => something.IsRed && something.IsBig)
Да, это означает, что вы должны сделать некоторую работу, но это ад проще для вас, чтобы изменить источник данных позже.
Надеюсь, это поможет!
Как мне создать приложение?У меня на самом деле 3 проекта в 1 решении: первое - это веб-приложение, второе - фреймворк с моими пользовательскими функциями и т. Д., А последний содержит только файл EDMX с классами POCO, автогенерируемыми дизайнером фреймворка сущности – Stefano
с сущностью framework 4.0 У меня нет класса DataContext, поэтому у меня нет метода GetTable ... Как вы это исправили? – Stefano
- 1. Кэширование объектов POCO в Entity Framework 4.0
- 2. Entity Framework и шаблон репозитория
- 3. Entity Framework POCO объекты
- 4. Mocking Entity Framework шаблон репозитория
- 5. Entity framework POCO
- 6. ASP.NET MVC - шаблон репозитория с Entity Framework
- 7. Вопросы для Entity Framework 4.0
- 8. Entity Framework POCO Сериализация
- 9. Entity Framework POCO Отношения
- 10. Entity Framework и POCO
- 11. Entity Framework + POCO
- 12. Функция Импорт и шаблон хранилища с Entity Framework 4.0
- 13. Entity Framework Сообщение для POCO с отношениями
- 14. Проблема Entity Framework 4.0 POCO и много-ко многим Проблема
- 15. Entity Framework 4.0 + Configurable ProviderManifestToken
- 16. Шаблон репозитория и сводный корневой шаблон и структура Entity Framework
- 17. Шаблон репозитория Framework Entity Framework почему бы не вернуть Iqueryable?
- 18. Entity Framework 5.0 репозитория с динамическим DbContext
- 19. Entity Framework 4/POCO - С чего начать?
- 20. Entity Framework 4.0. Создание Entity
- 21. Сопоставление POCO с Entity Framework в Entity Framework
- 22. IQueryable Entity Framework POCO Mappings
- 23. .NET 4.0, MVC 2, Entity Framework 4 и шаблон хранилища
- 24. Entity Framework POCO Обновить сущность?
- 25. Entity Framework 4.0 - Versioning
- 26. Шаблон репозитория с использованием Entity Framework, кода и операций CRUD
- 27. Является ли шаблон репозитория использоваться только с Entity Framework?
- 28. Используете ли вы шаблон репозитория с помощью Entity Framework?
- 29. Классы Entity Framework против POCO
- 30. Использование Entity Framework T4 POCO
первая ссылка, которую вы мне дали, EF4 CTP4, который в настоящее время является предварительным просмотром ... могу ли я использовать его? – Stefano
CTP поставляется с обновлениями к сообщению. Эти части отмечены, поэтому, если вы не хотите устанавливать CTP, вы можете следить за старым кодом (с помощью ContextBuilder). Если вы просто хотите повторно использовать упакованный исходный код (из загрузок), вы можете установить CTP. – Yakimych
Я ошибаюсь или ctp не лицензирован для производственных приложений? – Stefano