Я пытаюсь использовать ОРМ с учетом следующих требований:Как я могу использовать ORM для базы данных, чья схема неизвестна до времени выполнения?
1) Использование .NET Framework (последний Framework в порядке)
2) Должен быть в состоянии использовать Sybase, Oracle, MSSQL взаимозаменяемы
3) Схема в основном статична, НО есть динамические части.
Я немного знаком с SubSonic и NHibernate, но не глубоко.
Я чувствую, что ОРМ может делать то, что я хочу, но я не знаю, как использовать его в данный момент.
SubSonic, вероятно, не оптимален, так как в настоящее время он не поддерживает Sybase, и написание моего собственного провайдера для него за пределами моих ресурсов и возможностей прямо сейчас.
Для № 3 (см. Выше) существует пара таблиц метаданных, которые описывают таблицы, которые поставщики могут «сшивать» с существующей базой данных.
Назовем их MetaTables и MetaFields.
Существует базовая статическая схема, которую ORM (NHibernate ATM) прекрасно обрабатывает.
Однако поставщик может добавить таблицу в базу данных (физически), если они также добавляют данные в таблицы метаданных для описания их структуры.
Мне очень хотелось, чтобы я мог каким-то образом «прокормить» ORM этими метаданными (таким образом, чтобы это понимал), и иметь в этой точке возможность манипулировать данными.
My primary Цель заключается в том, чтобы уменьшить количество генерируемых SQL-выражений, которые я должен выполнить для этих динамических таблиц.
Я также хотел бы не беспокоиться о различиях в отправке SQL в Sybase, Oracle или MSSQL.
Моя основная проблема в том, что я не имею способ, чтобы ORM знать о динамических таблицах до времени выполнения, когда я буду иметь доступ к метаданным
Edit: Пример из использование может быть как outlined here:
IDataReader rdr = новый запрос («DynamicTable1»). ГДЕ («Арбитраж», 2) .ExecuteReader();
(Тем не менее, это не выглядит как SubSonic будет работать, так как нет поставщик Sybase (см выше)
отредактировал выше, спасибо. Извините, возможно, «манипулирование данными» является немногословным .. Я просто имел в виду регулярный CRUD (в какой бы форме я его не смог получить) – 2008-09-25 22:17:05
AHh, теперь я понимаю, что вы имеете в виду, и как вы планируете его использовать. Я использую LLBLGen совсем немного, и он генерирует классы на основе БД. Однако он поставляется с очень сложным динамическим механизмом запросов. Это тоже сибаза. Дайте мне немного, и я увижу, могу ли я написать код и вставить его. кто знает .. – mattlant 2008-09-25 22:26:40
Извините, но я не смог получить ничего, кроме строк SQL Text. Я не знаю, требуется ли вам больше абстракции, чем это. – mattlant 2008-09-25 22:56:58