Измените имя таблицы БД в EF4 (Entity Framework 4) - PullRequest
14 голосов
/ 18 июля 2010

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

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

Ответы [ 6 ]

21 голосов
/ 19 июля 2010

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

  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 спецификация .

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

12 голосов
/ 30 декабря 2011

Альтернативным решением будет переопределение метода в вашем классе 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"
    }
}
7 голосов
/ 20 июля 2010

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

0 голосов
/ 05 марта 2018

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

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

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

0 голосов
/ 02 октября 2014

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

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

0 голосов
/ 19 июля 2010

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

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