我手动创建一个类如何手动(通过代码)应用手工制作的DbMigration?
public class AddClientsTable : DbMigration, IMigrationMetadata
{
string IMigrationMetadata.Id
{
get { return "201611281757258_AddClientsTable"; }
}
string IMigrationMetadata.Source
{
get { return null; }
}
string IMigrationMetadata.Target
{
get { return "AddClientsTable-Migration"; }
}
public override void Up() {
CreateTable("Clients", t => new {
ClientId = t.Guid(name:"ClientId"),
Name = t.String()
})
.PrimaryKey(t => t.ClientId, "ClientId")
.Index(t => t.ClientId, "PK_Clients", true);
}
public override void Down() {
DropIndex("Clients", "PK_Clients");
DropTable("Clients");
}
}
,我想通过代码优先迁移从代码应用这样的:
var migration = new AddClientsTable();
migration.Up();
context.RunMigration(migration);
这是我从here偷走了,但是当我运行的代码我得到这个例外:
Unable to cast object of type 'System.Data.Entity.Migrations.Model.CreateIndexOperation' to type 'System.Data.Entity.Migrations.Model.HistoryOperation'.
HistoryOperation
是操作w更新__MigrationHistory
表?所以我如何通过代码来做到这一点?
我缺少的东西或EntityFrameowrk Update-Database
命令确实比我知道的更多?
为什么你正试图通过代码再次做到这一点? – Dispersia
好吧,我不使用Visual Studio(在我的旧机器上运行得太慢)来执行Update-Database命令,我只是使用gvim进行代码编辑,我真的希望能够像Code-First Databse Migration一样那。 – Abdelghani
你有没有powershell?对于实体框架 – Dispersia