Сначала я пытаюсь использовать автоматическую миграцию с сущностью и кодом. Я добавил новое свойство в свой класс (Team также является обычным классом):EF Автоматическая миграция, не работающая с виртуальной собственностью
У меня проблема с обновлением базы данных. После того, как я пишу команду, я получаю это в своей консоли:
Прямое переименование столбцов не поддерживается SQL Server Compact. В переименуйте столбец в SQL Server Compact, вам нужно будет его воссоздать.
Обычно обновляется работа (я попытался добавить простой int prop, и он просто обновляется), но у меня проблема, если это виртуально. Кто-нибудь может мне с этим помочь? Спасибо
Edit: Все строки после Update-Database -Verbose
Using NuGet project 'Project'.
Using StartUp project 'Project'.
Target database is: '|DataDirectory|database.sdf' (DataSource: |DataDirectory|database.sdf, Provider: System.Data.SqlServerCe.4.0, Origin: Configuration).
No pending explicit migrations.
Applying automatic migration: 201206130828142_AutomaticMigration.
Direct column renaming is not supported by SQL Server Compact. To rename a column in SQL Server Compact, you will need to recreate it.
Edit2: класса игрока, где я хочу, чтобы изменить базу данных:
public class Player
{
[Key]
public int PlayerID { get; set; }
[Required]
public string Name { get; set; }
[Required]
public string Surname { get; set; }
public string Nickname { get; set; }
public DateTime Birth { get; set; }
public string PhotoUrl { get; set; }
public string Post { get; set; }
public int TeamID { get; set; }
public virtual Team Team { get; set; }
public int SecondTeamID { get; set; }
public virtual Team SecondTeam { get; set; }
public int UserId { get; set; }
public virtual User User { get; set; }
}
класс команды:
public class Team
{
[Key]
public int TeamID { get; set; }
public string Name { get; set; }
public string League { get; set; }
public string Trainings { get; set; }
public string PhotoUrl { get; set; }
public int CoachID { get; set; }
public int AassistantID { get; set; }
public int ManagerID { get; set; }
public virtual ICollection<Player> Players { get; set; }
public bool showPosts { get; set; }
}
И это SQL, сгенерированный EF:
CREATE TABLE "Players" (
"PlayerID" int not null identity,
"Name" nvarchar(4000) not null,
"Surname" nvarchar(4000) not null,
"Nickname" nvarchar(4000) null,
"Birth" datetime not null,
"PhotoUrl" nvarchar(4000) null,
"Post" nvarchar(4000) null,
"TeamID" int not null,
"SecondTeamID" int not null,
"UserId" int not null,
"Team_TeamID" int null,
"Team_TeamID1" int null,
"SecondTeam_TeamID" int null,
PRIMARY KEY ("PlayerID")
);
ALTER TABLE "Players" ADD CONSTRAINT "Team_Players" FOREIGN KEY ("Team_TeamID") REFERENCES "Teams"("TeamID");
ALTER TABLE "Players" ADD CONSTRAINT "Player_Team" FOREIGN KEY ("Team_TeamID1") REFERENCES "Teams"("TeamID");
ALTER TABLE "Players" ADD CONSTRAINT "Player_SecondTeam" FOREIGN KEY ("SecondTeam_TeamID") REFERENCES "Teams"("TeamID");
ALTER TABLE "Players" ADD CONSTRAINT "Player_User" FOREIGN KEY ("UserId") REFERENCES "Users"("UserID") ON DELETE CASCADE;
Запустите 'Update-Database -Script', чтобы увидеть, что он пытается переименовать, или воспользуйтесь опцией' -Verbose', чтобы узнать больше. – Richard
Я попробовал, но мне это не помогло. –
Отправьте сгенерированный SQL и весь код вашего объекта в свой вопрос. Похоже, что EF думает, что вы переименовали свойство вместо добавления нового свойства. –