Я начинаю новый проект, и я смотрю на него как на очень хороший ORM, так и на не-SQL-упорный уровень.
Для этого проекта я действительно не забочусь о том, как данные сохраняются, если они могут быть запрошены и сохранены с разумной скоростью и, самое главное, с простыми запросами.
Concurrency следует обрабатывать без проблем (интерфейс будет находиться на другом уровне, и будет несколько одновременных пользователей, хотя это и не обязательно работает с одними и теми же данными), и тем меньше мне нужно сосредоточиться на слое данных (простые запросы, автоматическая ленивая загрузка и т.д.).
Я также хочу, чтобы во что бы то ни стало стоило возиться со строковыми запросами, поэтому инструменты, поддерживающие LINQ или другие интуитивные и, возможно, сильно типизированные запросы, получают большой бонус.
Наконец, работа с объектами POCO - это еще одна вещь, которую я действительно хотел бы сделать
Вот список продуктов, которые я оценил, и почему они не подходят, так что я не вижу никаких советов об их использовании:
- NHibernate: сумасшедший xml-материал, слишком много настроен, высокая сложность обслуживания и стоимость изменений модели, сеансовые фабрики беспорядочны и не соответствуют моим потребностям.
- Замок ActiveRecord: основанный на NHibernate, небольшая документация и некоторые проблемы, связанные с NHibernate, все еще применяются. Кроме того, для получения достойных моделей требуется так много атрибутов, что лучше создавать схему вручную, а способ обработки отношений - это позор.
- Linq To SQL: отсутствуют объекты POCO и в соответствии с MS он не улучшит много времени сверхурочных (EF - это то, к чему они привязаны)
- Entity Framweork: хотя в v4 объекты POCO возможны, они по-прежнему довольно хаки и заставляют вас делать слишком много ручной работы, чтобы все наладить. Кроме того, v4 - это просто бета
- LLBLGen Pro: хорошо, особенно с адаптерами SelfServicing, но не POCO. Кроме того, поставщик LINQ еще не совершенен. Наконец, удаление группы объектов невозможно через LINQ, что приводит к смешиванию API (один из которых далек от интуитивного) и что мне не нравится.
- XPO: ничего, кроме интуитивного, очень медленного, concurrency проблем, а не POCO
- SubSonic SimpleRepository: несколько минут я думал, что мечтаю. Дед подошел к концу, когда я понял, как вещь не обрабатывает отношения.
Я также посмотрел на MongoDB и CouchDB, но в этих случаях уловы со связанными объектами выглядели так, как будто они требовали слишком много тестирования, прежде чем все получилось. Кроме того, ни один из них не предлагает строго типизированные запросы.
Заранее благодарим за ваши предложения!