Изменить имя таблицы БД в EF4 (Entity Framework 4)
Кто-нибудь знает, как изменить сопоставленную таблицу БД для сущности в EF4 (структура сущностей 4)?
Позже редактирование: я думаю, что я нашел место, где определены имена таблиц, в браузере модели. Но их имена доступны только для чтения, поэтому редактировать их невозможно с помощью дизайнера. Кроме того, нет ссылки (из того, что я искал) на имя таблицы в схеме XML.
6 ответов
Если вам просто нужно изменить имя таблицы, вы можете:
- Откройте файл EDMX с помощью XML Editor.
- Найдите раздел SSDL в нем.
- Найдите элемент набора сущностей, например
<EntitySet Name="Customers" EntityType="ExampleModel.Store.Customers" Schema="dbo" />
, - добавлять
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
Поскольку я сначала создал свою базу данных, я сделал следующее:
- Резервное копирование файла *.edmx.
- Изменено имя таблицы базы данных.
- Сделал, как вы предложили, переименовав Имя набора сущностей в свойствах.
- Затем я обновил модель на основе моей базы данных, щелкнув правой кнопкой мыши на объекте.
- Я заметил, что в файле *.edmx не было половины строк, поэтому я наложил файл *.edmx на свою резервную копию, открыл его в блокноте и заменил все мои старые имена таблиц новыми именами таблиц.
- Перестроил приложение MVC, протестировал, и все заработало.
Примечание: нужны ли все эти шаги выше, я не знаю, это именно то, что я пытался, и это сработало для меня.