структура папки c # mvc и имя класса - PullRequest
2 голосов
/ 01 июля 2011

У меня есть веб-проект, папки которого создаются в пределах areas. Там у меня есть две основные папки: Admin и Home. В разделе «Домашняя страница» я размещу все, что касается конечного пользователя, а администратор будет моим бэк-офисом В папке Admin я разделил Модели и Представления на подпапки. Как в следующем примере:

Areas
  - Admin
     - Controllers
        - CategoryController.cs
        - UserController.cs
     - Models 
        - Category
          - Edit.cs
          - Create.cs
          - Index.cs
        - User
          - Edit.cs
          - Create.cs
          - Index.cs
     - Views
        - Category
          - Edit.cshtml
          - Create.cshtml
          - Index.cshtml
        - User
          - Edit.cshtml
          - Create.cshtml
          - Index.cshtml
  - Home 
     ...

Полагаю, пока все хорошо. Поскольку я использую Linq для Sql, и у меня есть таблица с именем Category, пространство имен и имя таблицы создают для меня некоторые проблемы. Скажи в категории / Edit.cs:

namespace MyProject.Areas.Admin.Models.Category
{
    public class Edit
    {
        public IQuaryable<Category> // this throws an intellisense error since it
                                    // understands "Category" as the folder/namespace
                                    // instead of the table name in linq to sql class

Ну, я знаю, что решение легко: изменить имя таблицы на что-то другое. Но ради читабельности кода я хочу иметь четкое имя таблицы и иметь четкий URL, чтобы имя папки оставалось в качестве категории. Так, пожалуйста, может кто-нибудь сказать мне, как отличить пространство имен от класса таблицы?

EDIT

Хотя мне нравится ответ, я изменил структуру папок и имена классов. Оставив имена классов L2S без изменений, я назвал модели ModelCategory и стараюсь избегать подпапок в папке Models с именами классов L2S. Кроме того, я объединил Edit.cs - Create.cs - Index.cs в ModelCategory, поскольку они более или менее используют одну и ту же модель. Поэтому я удалил подпапку «Категория» в моделях, и проблема исчезла.

Ответы [ 2 ]

4 голосов
/ 01 июля 2011

В дополнение к предложениям Юка вы также можете добавить оператор using с псевдонимом, чтобы сделать код менее подробным, например:

using L2S = MyProject.SomeLinqToSqlNamespace;

И теперь вы можете ссылаться на сущность категории просто как L2S.Категория

3 голосов
/ 01 июля 2011

Добавьте оператор использования, чтобы сообщить компилятору, где можно найти сущность / таблицу Category:

using MyProject.SomeLinqToSqlNamespace;

namespace MyProject.Areas.Admin.Models.Category
{
    public class Edit
    {
        public IQueryable<Category> // this throws an intellisense error since it
                                    // understands "Category" as the folder/namespace
                                    // instead of the table name in linq to sql class
        // ...other code
    }
}

Или префикс класса с встроенным пространством имен:

public IQueryable<MyProject.SomeLinqToSqlNamespace.Category>

... но это может быть довольно грязно читать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...