2010-04-06 5 views
1

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

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

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

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

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

ответ

0

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

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

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

+0

Мне любопытно узнать, что такое свойство Entity Namespace, когда вы открываете .dbml в представлении дизайнера? В нем говорится: «Определяет пространство имен классов сгенерированных сущностей». Похоже, это позволит мне делать то, что я хочу, но это нисколько не влияет на что-либо. – SventoryMang

+0

@ sah302: это пространство имен для всех классов сущностей, а не пространства имен для каждого из них. @Sander Rijken: T4 - хороший улов, конечно, это может помочь. Но в конкретной ситуации я предпочел бы подумать о разных стратагиях для размещения классов внутри пространств имен. – vittore

+0

Да, спасибо, я только что начал работать так, но это все еще ограничено только одним пространством имен. Спасибо за ваши ответы! – SventoryMang

0

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

+0

LINQ создает классы, экономя время, но они не так, как я организую свои проекты вообще. Как я уже сказал, у меня обычно есть один объект на пространство имен, используя подход SOA сорта. Каждое пространство имен имеет соответствующий класс объектов, а также классы DAO и службы. Затем в интерфейсе, когда я работаю со страницей, которая имеет дело только с одной или двумя таблицами (которые коррелируют с объектами), я использую только те, для которых я использую intellisense, и это не более суматоха, и это более эффективно. – SventoryMang

+0

Я думаю, что это не очень удобно, я бы предпочел иметь пространство имен DAL.DataObjects, пространства имен DAL.DataManager и т. Д .; но, вероятно, это выбор вкуса. Однако наличие всех объектов DO в одном пространстве имен и отдельное assebly, а не с помощью служб позволит вам, например, ссылаться на эту сборку из разных уровней вашего N-многоуровневого приложения. Например, рассмотрите сборку 'DO', на которую ссылаются сборки' DAL' и 'BLL' – vittore

+0

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

 Смежные вопросы

  • Нет связанных вопросов^_^