Как сгенерировать DataContext для базы данных SQL Server Compact?

#c# #linq-to-sql #code-generation #datacontext

#c# #linq-to-sql #генерация кода #datacontext

Вопрос:

Я только начал использовать LINQ-to-SQL, поэтому моя проблема может быть тривиальной.

У нас есть центральная база данных, работающая на SQL Server 2005. Существуют распространяемые настольные приложения .NET 4, которые сохраняют данные измерений в локальной базе данных SQL Server Compact. Эти файлы локальной базы данных (SDF) регулярно передаются на сервер, где они импортируются в центральную базу данных с помощью SqlBulkCopy.

Распределенные настольные приложения используют LINQ-to-SQL для обработки данных и создания своей локальной базы данных SDF. В настоящее время ORM выполняется написанным вручную подклассом DataContext, скомпилированным в виде отдельной библиотеки, которая содержит вложенный класс для каждой таблицы центральной базы данных. Я написал подкласс DataContext вручную просто потому, что хотел избежать генераторов кода до того, как более или менее пойму, как работает LINQ-to-SQL.

На данный момент центральная база данных проста, но вскоре она будет структурно расширена за счет добавления новых таблиц и новых версий существующих таблиц. Проблема в том, что было бы неплохо автоматизировать генерацию подкласса DataContext. В идеальной ситуации это можно было бы сделать как часть ежедневного процесса сборки. Таким образом, после того, как команда database изменит базу данных, команда разработчиков приложений получит новую версию библиотеки ORM. (Старый код не сломался бы, поскольку каждая старая таблица осталась бы в базе данных. Старые версии таблиц будут удалены только в том случае, если ни одна из версий распределенного приложения их не использует.)

Итак, мой вопрос в том, каков наилучший способ сгенерировать подкласс DataContext для существующей базы данных? Я бы предпочел инструмент командной строки или API. Заранее благодарю вас за помощь!

Комментарии:

1. Упс, SqlMetal.exe это инструмент, который мне нужен…