Изменить имя таблицы БД в EF4 (Entity Framework 4)

Кто-нибудь знает, как изменить сопоставленную таблицу БД для сущности в EF4 (структура сущностей 4)?

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

6 ответов

Решение

Если вам просто нужно изменить имя таблицы, вы можете:

  1. Откройте файл EDMX с помощью XML Editor.
  2. Найдите раздел SSDL в нем.
  3. Найдите элемент набора сущностей, например <EntitySet Name="Customers" EntityType="ExampleModel.Store.Customers" Schema="dbo" />,
  4. добавлять Table="MyTableName" приписывать. <EntitySet Name="Customers" EntityType="ExampleModel.Store.Customers" Schema="dbo" Table="MyTableName" />

Вот полная спецификация CSDL, SSDL, MSL.

Надеюсь, это поможет.

Альтернативным решением было бы переопределить метод в вашем DbContext учебный класс.

public class MyDbContext : DbContext
{
    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        modelBuilder.Entity<Product>().ToTable("DB_PRODUCTS_TBL");
        // otherwise EF assumes the table is called "Products"
    }
}

Я полагаю, что вы спрашиваете, переконфигурируйте отображение сущности в таблицу. Вы можете щелкнуть правой кнопкой мыши по объекту и выбрать отображение таблицы. Это покажет вам сущность, к которой относится таблица. Вы можете изменить таблицу там. Однако при открытии раскрывающегося списка вы увидите только таблицу, импортированную с помощью мастера обновления модели. Если таблица не импортирована, она не будет указана. Затем вы можете сопоставить свойства соответствующим образом с именами столбцов таблицы.

В обозревателе моделей или в области конструктора щелкните правой кнопкой мыши объект и выберите свойства. В окне свойств отредактируйте поле "Имя набора сущностей".

Это сработало для меня, однако я сначала проектировал схему, а затем генерировал базу данных.

Вы можете выполнить сохраненный процесс, который изменяет имя таблицы, передавая имя таблицы в качестве переменной. Затем импортируйте сохраненный процесс в EF4.

CREATE PROCEDURE ChangeTableName
    @TableName varchar(200)
AS
BEGIN
    SET NOCOUNT ON;
    EXEC sp_rename "User", @TableName
END
GO

Поскольку я сначала создал свою базу данных, я сделал следующее:

  1. Резервное копирование файла *.edmx.
  2. Изменено имя таблицы базы данных.
  3. Сделал, как вы предложили, переименовав Имя набора сущностей в свойствах.
  4. Затем я обновил модель на основе моей базы данных, щелкнув правой кнопкой мыши на объекте.
  5. Я заметил, что в файле *.edmx не было половины строк, поэтому я наложил файл *.edmx на свою резервную копию, открыл его в блокноте и заменил все мои старые имена таблиц новыми именами таблиц.
  6. Перестроил приложение MVC, протестировал, и все заработало.

Примечание: нужны ли все эти шаги выше, я не знаю, это именно то, что я пытался, и это сработало для меня.

Другие вопросы по тегам