Мы пересматриваем некоторые из наших практических методов работы, и конкретная вещь, на которую мы сейчас обращаем внимание, — это лучший метод для работы с клиентами на основе Flex и веб-службами .NET.
Наш типичный подход заключается в том, чтобы сначала смоделировать взаимодействия на основе требований, смоделировать некоторые XML-сообщения и проверить их работоспособность, преобразовать их в XSD и, наконец, создать классы на каждом конце, которые сериализуются в/из XML.
Это работает нормально, пока мы не наткнемся на базу данных, а затем такие вещи, как соединение таблиц, начнут портить всю ту работу, которую мы проделали, упрощая клиентскую часть.
Мы пытались решить эту проблему с помощью LINQ to SQL и других преобразователей OR, но ни один из них не решает проблему, не создавая более серьезных проблем.
Итак, на самом деле возникает вопрос: Не рассматривая СУРБД как простое хранилище объектов, есть ли лучший способ справиться со сложными требованиями к данным без написания огромного количества кода преобразования?
Я полагаю, что волшебная пуля, которую я ищу, — это то, что знает, что такое таблица соединений и как с ней работать, и при этом позволяет мне генерировать «хороший» сериализованный XML для Flex и сохраняет строгую типизацию .NET.
Бонусные баллы, если он может анализировать SQL, необходимый для каждого метода, создавать хранимые процедуры и использовать их. Но это, наверное, слишком многого требует :)
Примечание относительно "Объединения таблиц":
Наше определение: у вас есть таблица с двумя или более внешними ключами в качестве собственного первичного ключа.
eg:
Photos (PK PhotoID) <- PhotoTags (PK FK PhotoID, PK FK TagID) -> Tags (PK TagID)
Когда клиент Flex получает объект Photo, он также может получить список всех тегов. Итак, это может выглядеть так:
<photo id="3"> <tags> <tag name="park" /> <tag name="sydney" /> </tags> </photo>
Вместо этого инструменты ИЛИ, которые я видел, дают нам:
<photo id="3">
<phototags>
<phototag>
<tag name="park" />
</phototag>
<phototag>
<tag name="sydney" />
</phototag>
</phototags>
</photo>