Другое важное различие между ними возникает при использовании LINQ-to-SQL и сгенерированных классов текстовых данных. Например, пример базы данных Northwind; изначально вы получаете:
Northwind.dbml
Northwind.dbml.layout
Northwind.designer.cs
Если вы теперь хотите расширить частичные классы, добавив свой собственный Northwind.cs
, вы получите
Northwind.dbml
Northwind.dbml.layout
Northwind.designer.cs
Northwind.cs
Забавно , есть ошибка в генераторе кода (MSLinqToSQLGenerator
) - это означает, что если директивы using
находятся вне пространства имен (как будто они по умолчанию), он ломается - с сообщением:
The custom tool 'MSLinqToSQLGenerator' failed. Unspecified error
И файл Northwind.designer.cs
удаляется. Нет больше контекста данных!
Однако, если вы переместите директивы using
в пространство имен (и повторно запустите пользовательский инструмент - щелкните правой кнопкой мыши в обозревателе решений), он будет работать правильно.
Итак: это не языковая деталь - это просто ошибка в генераторе кода; но есть довольно большая разница между "работает правильно" и сгенерированным кодом удаляется ...
Обратите внимание, что вы также можете это исправить, просто назвав свой файл чем-то другим, например NorthwindExtras.cs
.
Чумовая.