Расширение классов LINQ для моих собственных классов в разных пространствах имен? - PullRequest
1 голос
/ 07 апреля 2010

У меня есть файл .dbml, который, конечно, содержит автоматически сгенерированные классы, основанные на моих таблицах.

Однако я хотел бы расширить их на свои собственные классы.Обычно я проектирую так, чтобы каждая из моих таблиц получала свое собственное пространство имен в своей собственной папке, содержащей все связанные с ними классы dao и service.Поэтому, если я имею дело со страницей, которая имеет отношение только к «клиентам», например, я могу включить только customerNS.

Но при использовании LINQ я, похоже, не могу этого сделать.Я попытался удалить пространство имен по умолчанию из проекта, я попытался поместить файл .dbml в его собственную папку с настраиваемым пространством имен, а затем добавить оператор использования, но ничего не работает.

Я также виделсвойства Пространства имен Entity, Context Namespace и Custom Tool Namespace, связанные с файлом .dbml, и попытались присвоить им все имена x и попробовать «использовать x» в моем другом классе, чтобы позволить мне расширить частичные классы, но это просто неработа.

Возможно ли это, или я должен держать все расширенные частичные классы в том же пространстве имен, что и файл .dbml?

Ответы [ 2 ]

0 голосов
/ 07 апреля 2010

Если типы не имеют отношений, ответ прост: используйте несколько файлов dmbl. Если вам нужны отношения, и вы также хотите читать несколько пространств имен.

Вы можете сделать это с помощью файла шаблона T4. В VS2010 есть шаблон для его создания (он называется шаблоном генератора или чем-то еще). Для VS2008 вы можете найти один на codeplex

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

0 голосов
/ 07 апреля 2010

Вы должны хранить все классы linq в одном пространстве имен. Почему вы пытаетесь поместить классы DO в разные пространства имен?

...