Изменение имени таблицы БД в EF4 (entity framework 4)
кто-нибудь знает, как изменить сопоставленную таблицу БД для сущности в EF4 (entity framework 4)?
позже edit: я думаю, что нашел место, где определены имена таблиц, в браузере моделей. Но их имена только для чтения, поэтому их невозможно редактировать с помощью конструктора. Кроме того, нет ссылки (из того, что я искал) на имя таблицы в схеме xml.
6 ответов
Если вам просто нужно изменить имя таблицы вы можете:
- откройте файл EDMX с помощью редактора XML.
- найдите раздел SSDL в нем.
- найдите элемент набора сущностей, например
<EntitySet Name="Customers" EntityType="ExampleModel.Store.Customers" Schema="dbo" />
. - добавить
альтернативным решением было бы переопределить метод в вашем 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"
}
}
Я считаю, что вы просите перенастроить отображение сущности в таблицу. Щелкните правой кнопкой мыши объект и выберите сопоставление таблиц. Это покажет вам сущность, которая отображается в таблице. Вы можете поменять там столик. Однако при открытии раскрывающегося списка отображается только таблица, импортированная с помощью мастера обновления модели. Если таблица не импортирована,она не будет указана. Затем можно соответствующим образом сопоставить свойства с именами столбцов таблицы.
в обозревателе моделей или области конструктора щелкните правой кнопкой мыши объект и выберите Свойства. В окне Свойства измените поле "Имя набора сущностей".
Это сработало для меня, однако я сначала разрабатывал схему, а затем создавал базу данных.
поскольку я сначала создал свою базу данных, я сделал следующее:
- резервные копии *.файл edmx.
- сменил имя таблицы базы данных.
- сделал, как вы предложили, переименовав имя набора сущностей в свойствах.
- затем я обновил модель на основе моей базы данных, щелкнув правой кнопкой мыши объект.
- Я заметил, что *.в файле edmx отсутствовала половина строк,поэтому я наложил*.файл edmx с моей резервной копией, открыл его в блокноте и заменил все мое старое имя таблицы моим новым именем таблицы.
- перестроил приложение MVC, протестировал, и он работал.
Примечание: нужны ли все эти шаги выше, я не знаю, это просто что я попробовал и это сработало для меня.
вы можете выполнить сохраненный proc, который изменяет имя таблицы, передавая имя таблицы как переменную. Затем импортируйте сохраненный proc в EF4.
CREATE PROCEDURE ChangeTableName
@TableName varchar(200)
AS
BEGIN
SET NOCOUNT ON;
EXEC sp_rename "User", @TableName
END
GO