Linq to SQL создание дубликатов файлов конструктора

#c# #linq-to-sql

#c# #linq-to-sql

Вопрос:

У меня странная ошибка с моими файлами Linq to SQL DBML, когда я когда-либо сохраняю его, вместо сохранения в существующий файл конструктора создается дубликат файла.

Это вызывает ошибки повсюду, поскольку существует неоднозначность между конструктором контекста данных внутри file.designer.cs и file1.designer.cs

Есть ли какой-либо способ исправить эту ошибку, который не включает удаление и воссоздание файлов dmbl. поскольку эта ошибка возникает во всех моих файлах DBML, некоторые из которых довольно большие.

введите описание изображения здесь

На приведенном выше изображении показана проблема, с которой я столкнулся.

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

1. Интересно… возможно, это связано с VCS? возможно, этот файл доступен только для чтения?

2. Только что проверил, и файл не доступен только для чтения. Удаление обоих файлов конструктора и перестройка dbml оставляет мне только 1 файл конструктора, и он работает, но по-прежнему minerva1.designer.cs, похоже, не может удалить «1»

3. интересно; если вы выполните поиск в файлах для «Minerva1», может быть, что-то появится? (возможно, это явно указано в dbml, например)

Ответ №1:

Не уверен, что могло вызвать это (но предположение Марка о том, что файл доступен только для чтения или не извлекается, кажется возможным), но связь описана в файле .proj . Если вы откроете этот файл с помощью текстового редактора, вы должны увидеть где-то внутри что-то вроде:

 <ItemGroup>
<None Include="Minerva.dbml">
  <Generator>MSLinqToSQLGenerator</Generator>
  <LastGenOutput>Minerva1.designer.cs</LastGenOutput>
  <SubType>Designer</SubType>
</None>
  

Заменить Minerva1.designer.cs на Minerva.designer.cs . Теперь вы можете удалить или исключить Minerva1.designer.cs файл из своего проекта, и при следующем вызове генератора он будет перезаписан Minerva.designer.cs , как и ожидалось.

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

1. Я столкнулся с той же проблемой, когда я добавил модель БД в ДРУГОЙ проект в качестве ССЫЛКИ, я решил проблему, как вы сказали, в файле .proj второго проекта. Спасибо 🙂

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

Ответ №2:

У меня была такая же проблема. Оказывается, система управления версиями хранила файл. Процесс сборки не может воссоздать файл, поэтому он создает новый. Поскольку этот файл генерируется автоматически, его можно безопасно удалить из системы управления версиями. Я использую git для управления версиями.

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

1. Грррр… вы были абсолютно правы. Иногда VS2013 извлекает файл .dbml, но не файл designer.cs … затем создает дополнительные файлы designer.cs. Спасибо за совет !