C #: автоматическое создание классов DDL и ORM из файла XML-схемы (XSD) - PullRequest
3 голосов
/ 17 августа 2011

У меня есть довольно большой XSD-файл здесь .

Я хочу сгенерировать из файла следующее:

  1. Generate DDL (для PostgreSQL), DDL должен содержать начальные значения, где это уместно, как указано в «разрешенных» значениях в XSD

  2. Создать ORM, который позволит мне выполнять операции CRUD с записями вбаза данных, созданная на шаге 1

Может ли кто-нибудь предложить инструмент или серию инструментов / технологий для достижения этой цели?

В случае, если мне нужно развернуть собственное решение, могу ликто-то предлагает хороший учебник по XSLT (желательно, кулинарную книгу - поскольку я уже знаю немного XML / XPath).

Между прочим, я попробовал xsd.exe в Windows - он потерпел неудачу и напечатал сообщение об ошибке, указывающее на наличиециклическая ссылка в файле XSD.Затем я попробовал xsd.exe на моно, это сработало, но в созданном файле были недопустимые выражения.Я предполагаю (возможно, неправильно), что xsd.exe НЕ является способом достижения этих двойных целей - если я ошибаюсь, дайте мне знать.

Кроме того, я взял файл преобразования XSLT Энн Левкович для генерации DDL из XSD-файла - НО, который, похоже, застрял в бесконечном цикле - и также жаловался на «бесконечную рекурсию»

Поэтому мне нужна помощь со следующим:

  • Прежде всего, кто-нибудь может проверить / проверить, действительно ли XSD-файл испорчен ?- и если это так, как это исправить?
  • Как мне создать DDL и ORM из файла XSD?

1 Ответ

0 голосов
/ 13 сентября 2011

Лично я бы сам написал генератор. Там могут быть хорошие генераторы, но я их не видел. Все, что я пытался использовать (хотя я никогда не использовал XSD в качестве отправной точки), генерирует ужасный код, и, что еще хуже, довольно трудно настроить для обработки каждой причуды, которая неизбежно возникает.

Делать это намного меньше работы, чем кажется людям, и дает много преимуществ, не в последнюю очередь то, что вы фактически будете иметь полный контроль над тем, что генерируется. И вы могли бы даже (и довольно легко) перейти на следующий уровень и генерировать материал во время выполнения. Последнее вряд ли имеет смысл, если схема является окончательной, но может значительно сэкономить время, если она постоянно развивается.

Я совершенно уверен, что это не тот ответ, на который вы надеялись, и мне было бы интересно, если бы кто-нибудь знал о хороших инструментах для работы.

...