Я использую SqlMetal для общего использования моего класса DataContext.dbml для моего приложения ASP.net с использованием LinqToSql. Когда я изначально создавал файл DataContext.dbml, Visual Studio использовала его для создания связанного файла DataContext.designer.cs. Этот файл конструктора содержит класс DataContext на C#, который используется во всем приложении (и является производным от XML в файле dbml) и необходим для устранения разрыва между выводом SqlMetal и использованием DataContext с LinqToSql.
Однако, когда я вношу изменения в базу данных и воссоздаю файл dbml, файл дизайнера никогда не восстанавливается на моем веб-сайте. Вместо этого сохраняется старый файл конструктора (и поэтому никакие изменения в файле DBML не доступны через класс LinqToSql DataContext).
Единственный процесс, который мне до сих пор удавалось использовать для регенерации файла дизайнера, - это
Кажется, что Visual Studio будет генерировать файл designer.cs только при обнаружении нового файла dbml, в котором еще нет файла designer.cs. Этот процесс довольно непрактичен, поскольку он включает в себя несколько ручных шагов и портит систему управления версиями.
Кто-нибудь знает, как я могу автоматически восстановить файл designer.cs без необходимости следовать описанному выше процессу ручного удаления / обновления / восстановления / удаления?





Файл designer.cs обычно поддерживается автоматически при внесении изменений в DBML в Visual Studio. Если VS не запущен, когда вы воссоздаете DBML, он может не знать.
Убедитесь, что для файла .DBML в Visual Studio для свойства Custom Tool установлено значение MSLinqToSQLGenerator. Если это не так, установите его на это. Если это так, попробуйте после внесения изменений щелкнуть правой кнопкой мыши DBML и выбрать «Запустить настраиваемый инструмент», чтобы проверить, обновляет ли это файл .designer.cs.
Вы также можете сгенерировать файл класса с помощью SqlMetal:
sqlmetal /code:DataContext.designer.cs /language:csharp DataContext.dbml
Не знаю, как это удалось, но вот некоторые вещи, над которыми я работал, чтобы вернуть его.
Что-то заблокировало его, поэтому был создан новый файл db.designer.cs (db1.designer.cs).
Я без всякого сравнения открывал, сравнивая этот файл с предыдущим (BC не должен блокироваться, и я не думаю, что это была проблема, никогда раньше с ним не было такой проблемы)
Откройте файл проекта в блокноте и найдите эти записи, я почитал предыдущую версию в системе контроля версий.
это то, что я вернул.
<Compile Include = "db.designer.cs">
<AutoGen>True</AutoGen>
<DesignTime>True</DesignTime>
<DependentUpon>db.dbml</DependentUpon>
</Compile>
...
<LastGenOutput>db.designer.cs</LastGenOutput>
lastgenOutput был установлен на db1.desginer.cs
Спасибо, Дуг, это то, что я искал. Он продолжал создавать дубликаты дизайнерского файла, и это меня безмерно раздражало. Это решило мою проблему.