Если я добавлю новую миграцию (сначала код EF), структура моей новой миграции класса / базы данных будет выглядеть примерно так:
namespace MySolutionNamespace.MyProjectNamespace
{
using System.Data.Entity.Migrations;
public partial class MyMigration : DbMigration
{
//....
}
}
Является ли причина того, что операторы using
обрабатываются как в, задокументировано где-либо в пространстве имен?
@ user1672994 "however, having using inside namespace and outside namespace does not matter."
, то есть полностью ложь
В приведенном выше коде оператор using находится вне области пространства имен. Это то, что генерирует EF?
@maccettura - Спасибо. Отметил, что.
@maccettura Вы, конечно, правы, но я считаю, что все примеры различий чрезвычайно надуманы. Обычно я бы сказал: «Использование директив внутри или вне пространства имен не имеет значения если вы не делаете какую-то сумасшедшую ерунду с пространствами имен.».
@iCode - не знаю, как это произошло, отредактировал OP, спасибо.
Возможный дубликат Должны ли директивы using находиться внутри или вне пространства имен?
Ах, кажется, кто-то отредактировал мой вопрос, чтобы переместить директиву using, что полностью противоречит цели вопроса.
Есть несколько хороших сообщений / ответов по SO по этой теме. Вот объяснение того, как вы потенциально можете столкнуться с проблемами при определении области пространства имен в верхней части файла: https://stackoverflow.com/a/151560/1617161
Вот еще одно обсуждение потенциальных проблем: https://stackoverflow.com/a/1342873/1617161
Я всегда помещал их в начало файла, что кажется безопасным, если ваши пространства имен и классы очень специфичны для приложения; т.е. Не будет конфликтовать с другими DLL.
Я полагаю, что конкретно для Entity Framework, похоже, что они пытаются предотвратить конфликты с классами в пространстве имен System.Data.Entity.Migrations. Размещение внутри пространства имен снижает вероятность взлома кода, у которого есть класс, названный так же, как класс в пространстве имен System.Data.Entity.Migrations.
Я считаю, что это просто шаблон, который генерирует код. Некоторые инструменты обеспечения согласованности кода, такие как Stylecop, рекомендуют определять использование внутреннего пространства имен; так что это может быть одной из причин. однако использование внутреннего пространства имен и внешнего пространства имен не имеет значения.