Сгенерированные классы Entity Framework не входят в требуемое пространство имен, существует ли способ изменить пространство имен, которое он использует без восстановления?
Если мне нужно восстановить, где должно быть указано пространство имен. Я пытаюсь использовать частичные классы из пространства имен Models, но они не совпадают.
Ниже приведен упрощенный фрагмент кода, где были созданы классы инфраструктуры сущности
namespace projectname
{
#region Contexts
/// <summary>
/// No Metadata Documentation available.
/// </summary>
public partial class MyClass
{
}
}
Когда я добавляю класс в папку с моделями,
namespace projectname.Models
{
public partial class MyClass
{
//etc, etc
}
}
Поскольку вы видите, что пространства имен не соответствуют вызывающим проблемам, когда я пытаюсь их использовать, поскольку компилятор видит как projectname.Models.MyClass, так и projectname.MyClass.
Я хотел бы получить некоторые советы по правильному исправлению этого вопроса, желательно обновить классы EF, чтобы они существовали в пространстве имен projectname.Models, но я не уверен, как это сделать.
Ответы
Ответ 1
IIRC, если вы используете модель данных Entity, вы должны иметь возможность изменять пространство имен непосредственно через xml файл или файлы (возможно, вам придется изменить его для всех различных моделей хранения и концептуальных моделей). Возможно даже какой-то способ изменить его в дизайнере. Кажется достаточно простым.
На самом деле решение может быть здесь:
Сгенерированный обзор кода (конструктор модели данных сущностей) (см. Пользовательское пространство имен инструментов)
Ответ 2
В соответствии с комментарием Roman O, пространство имен может быть изменено путем обновления свойства "Пользовательское пространство имен инструментов" файла текстового преобразования (.tt), которое связывает сгенерированные классы сущностей (в подходе Database First) к файлу модели сущности (.edmx). Это работает в VS 2012 Express с EF 5.0.
Я бы опубликовал скриншот, но из-за отсутствия репутации.
Ответ 3
- Щелкните правой кнопкой мыши файл.edmx в проекте в обозревателе решений и выберите "Свойства"
- В области свойств VS, точное пользовательское пространство имен инструментов
- Введите полное пространство имен CLR, которое вы хотите
- Перестроить проект
Ответ 4
Пространство имен автоматически генерируемых классов будет наследоваться из настроек проекта VS (и даже изменится, если вы измените его там). Конечно, у вас должно быть свойство "Custom Namespace". (просто протестировал его с VS2013 и EF6.1) В отличие от файлов настроек, которые всегда были pita :)
Для более старой версии есть хорошее видео по ручной смене:
https://youtu.be/B7Cqc9F0Ih8