ОБНОВЛЕНИЕ: ПЕРЕИМЕНОВАНИЕ КОЛОНН Я вижу, что ваш вопрос изменился, поскольку вы спрашиваете о переименовании столбцов, поэтому я обновляю свой ответ.Давайте последуем вашему новому примеру и создадим вашу таблицу с помощью T-SQL:
CREATE TABLE [dbo].MyTable
(
[Id] INT NOT NULL PRIMARY KEY,
[name] NCHAR(10) NULL
)
Entity Framework (EF) создаст для вас файл MyTable.cs:
public partial class MyTable
{
public int Id { get; set; }
public string name { get; set; }
}
И этоосновной раздел вашего EDMX:
<edmx:ConceptualModels>
<Schema Namespace="database1Model" Alias="Self" annotation:UseStrongSpatialTypes="false" xmlns:annotation="http://schemas.microsoft.com/ado/2009/02/edm/annotation" xmlns:customannotation="http://schemas.microsoft.com/ado/2013/11/edm/customannotation" xmlns="http://schemas.microsoft.com/ado/2009/11/edm">
<EntityContainer Name="database1Entities" annotation:LazyLoadingEnabled="true" >
<EntitySet Name="MyTables" EntityType="database1Model.MyTable" />
</EntityContainer>
<EntityType Name="MyTable">
<Key>
<PropertyRef Name="Id" />
</Key>
<Property Name="Id" Type="Int32" Nullable="false" />
<Property Name="name" Type="String" MaxLength="10" FixedLength="true" Unicode="true" />
</EntityType>
</Schema>
</edmx:ConceptualModels>
Затем вы переименовываете свои столбцы, используя, например, Visual Studio Server Explorer, который сгенерирует этот T-SQL (я не вставлял никаких данных в MyTable):
CREATE TABLE [dbo].[MyTable] (
[myTableID] INT NOT NULL,
[fullName] NCHAR (10) NULL,
PRIMARY KEY CLUSTERED ([myTableID] ASC)
);
На этом этапе, если вы обновите свой EDMX из базы данных, вы получите следующее:

Итак, если выоткройте файл EDMX и удалите три элемента, за которыми следует <!-- REMOVE --->
, как показано ниже:
<edmx:ConceptualModels>
<Schema Namespace="database1Model" Alias="Self" annotation:UseStrongSpatialTypes="false" xmlns:annotation="http://schemas.microsoft.com/ado/2009/02/edm/annotation" xmlns:customannotation="http://schemas.microsoft.com/ado/2013/11/edm/customannotation" xmlns="http://schemas.microsoft.com/ado/2009/11/edm">
<EntityContainer Name="database1Entities" annotation:LazyLoadingEnabled="true" >
<EntitySet Name="MyTables" EntityType="database1Model.MyTable" />
</EntityContainer>
<EntityType Name="MyTable">
<Key>
<PropertyRef Name="Id" /><!-- REMOVE -->
<PropertyRef Name="myTableID" />
</Key>
<Property Name="Id" Type="Int32" Nullable="false" /><!-- REMOVE -->
<Property Name="name" Type="String" MaxLength="10" FixedLength="true" Unicode="true" /><!-- REMOVE -->
<Property Name="myTableID" Type="Int32" Nullable="false" />
<Property Name="fullName" Type="String" MaxLength="10" FixedLength="true" Unicode="true" />
</EntityType>
</Schema>
</edmx:ConceptualModels>
и обновите модель, все готово.Даже ваш автоматически сгенерированный файл MyTable.cs будет обновлен новыми именами:
public partial class MyTable
{
public int myTableID { get; set; }
public string fullName { get; set; }
}
ОТВЕТ НА ОРИГИНАЛЬНЫЙ ВОПРОС: ПЕРЕИМЕНОВАНИЕ ТАБЛИЦЫ Один из способов сделать этоотредактируйте ваш файл .EDMX, который Entity Framework создал для вас и где хранит всю информацию, касающуюся сопоставления базы данных с вашими объектами.Этот файл находится в корневой папке вашего проекта, то есть там, где находится файл .csproj, и представляет собой просто XML-файл, который можно открыть с помощью текстового редактора
- За пределами VisualStudio, например, PsPad, NotePad ++.и т. д.
- Или щелкните его правой кнопкой мыши в Visual Studio, выберите «Открыть с помощью ...» и выберите «Редактор XML (текста)».
Я думаю, ваш Foo
класс соответствует таблице Foo
;последнее теперь, вероятно, будет FooNew
или чем-то похожим.
Чтобы переименовать таблицу, но сохранить класс Foo
, просто найдите эту часть вашего файла EDMX:
<!-- SSDL content -->
<edmx:StorageModels>
...
<EntitySet Name="Foo" ... Schema="dbo" ... />
...
</edmx:StorageModels>
Внутри EntitySet
добавьте Table="FooNew"
в качестве атрибута, как подсказывает ответ на этот вопрос :
<EntitySet Name="Foo" ... Schema="dbo" ... Table="FooNew" />
В этот момент закройте и сохраните;снова откройте edmx, дважды щелкнув по нему, а затем «Обновить модель из базы данных», как вы делали раньше.