В настоящее время изменения в базе данных производятся с помощью программы управления SQL Server. Если таблица изменяется, запускается sqlmetal для регенерации классов linqtosql, и разработка продолжается. Однако это усложняет развертывание, поскольку вам необходимо пройти и вручную обновить базу данных развертывания (и любые другие базы данных, используемые в цикле разработки). Было бы неплохо, если бы мы могли использовать C # для генерации этих изменений, поскольку это помогло бы устранить человеческие ошибки и иметь дополнительное преимущество, заключающееся в том, что мы могли сохранить структуру базы данных в git. Прямо сейчас, единственное представление базы данных находится в сгенерированных классах linqtosql.
Я искал хорошую библиотеку, которая может справиться с подобными вещами, но основные решения, похоже, заключаются в следующем: сохранить сценарий генерации SQL или встроить SQL в классы C #, которые можно запускать для внесения изменений в база данных. Обе эти ситуации кажутся очень неидеальными, поскольку вы теряете хорошую строгую типизацию, которую обеспечивает C #. Кажется, должен быть способ сделать это, используя чистый C #.
Я видел намеки на возможность создания таких вещей, как генерация баз данных из POCO с использованием как структуры сущностей, так и linqtosql, но мне трудно найти конкретные примеры этого. Кроме того, я не смог обнаружить, есть ли у них изящный (т.е. сохраняющий данные) способ обработки изменений в базе данных после первоначальной генерации таблицы.
Существуют ли проекты, которые решают эту проблему?