Изменение имени таблицы БД в EF4 (entity framework 4)

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

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

6 ответов


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

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

альтернативным решением было бы переопределить метод в вашем 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"
    }
}

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


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

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


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

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

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


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

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