c#实体更新mysql数据库_c# – 身份实体框架库 – 更新数据库[MySQL]

我刚刚将库Microsoft.AspNet.Identity.EntityFramework更新到最后一个版本(2.0.0.0),我发现创建表时出现了一些错误.当我生成迁移代码(向上和向下方法)时,我无法将更改上传到数据库,因为我在执行“Updata-

Database”时遇到索引问题

Specified key was too long; max key length is 767 bytes

要执行的代码:

public override void Up()

{

CreateTable(

"dbo.AspNetRoles",

c => new

{

Id = c.String(nullable: false, maxLength: 128, storeType: "nvarchar"),

Name = c.String(nullable: false, maxLength: 256, storeType: "nvarchar"),

})

.PrimaryKey(t => t.Id)

.Index(t => t.Name, unique: true, name: "RoleNameIndex");

CreateTable(

"dbo.AspNetUserRoles",

c => new

{

UserId = c.String(nullable: false, maxLength: 128, storeType: "nvarchar"),

RoleId = c.String(nullable: false, maxLength: 128, storeType: "nvarchar"),

})

.PrimaryKey(t => new { t.UserId, t.RoleId })

.ForeignKey("dbo.AspNetRoles", t => t.RoleId, cascadeDelete: true)

.ForeignKey("dbo.AspNetUsers", t => t.UserId, cascadeDelete: true)

.Index(t => t.UserId)

.Index(t => t.RoleId);

CreateTable(

"dbo.AspNetUsers",

c => new

{

Id = c.String(nullable: false, maxLength: 128, storeType: "nvarchar"),

Email = c.String(maxLength: 256, storeType: "nvarchar"),

EmailConfirmed = c.Boolean(nullable: false),

PasswordHash = c.String(maxLength: 256, storeType: "nvarchar"),

SecurityStamp = c.String(maxLength: 256, storeType: "nvarchar"),

PhoneNumber = c.String(maxLength: 256, storeType: "nvarchar"),

PhoneNumberConfirmed = c.Boolean(nullable: false),

TwoFactorEnabled = c.Boolean(nullable: false),

LockoutEndDateUtc = c.DateTime(precision: 0),

LockoutEnabled = c.Boolean(nullable: false),

AccessFailedCount = c.Int(nullable: false),

UserName = c.String(nullable: false, maxLength: 256, storeType: "nvarchar"),

})

.PrimaryKey(t => t.Id)

.Index(t => t.UserName, unique: true, name: "UserNameIndex");

CreateTable(

"dbo.AspNetUserClaims",

c => new

{

Id = c.Int(nullable: false, identity: true),

UserId = c.String(nullable: false, maxLength: 128, storeType: "nvarchar"),

ClaimType = c.String(maxLength: 256, storeType: "nvarchar"),

ClaimValue = c.String(maxLength: 256, storeType: "nvarchar"),

})

.PrimaryKey(t => t.Id)

.ForeignKey("dbo.AspNetUsers", t => t.UserId, cascadeDelete: true)

.Index(t => t.UserId);

CreateTable(

"dbo.AspNetUserLogins",

c => new

{

LoginProvider = c.String(nullable: false, maxLength: 128, storeType: "nvarchar"),

ProviderKey = c.String(nullable: false, maxLength: 128, storeType: "nvarchar"),

UserId = c.String(nullable: false, maxLength: 128, storeType: "nvarchar"),

})

.PrimaryKey(t => new { t.LoginProvider, t.ProviderKey, t.UserId })

.ForeignKey("dbo.AspNetUsers", t => t.UserId, cascadeDelete: true)

.Index(t => t.UserId);

}

public override void Down()

{

DropForeignKey("dbo.AspNetUserRoles", "UserId", "dbo.AspNetUsers");

DropForeignKey("dbo.AspNetUserLogins", "UserId", "dbo.AspNetUsers");

DropForeignKey("dbo.AspNetUserClaims", "UserId", "dbo.AspNetUsers");

DropForeignKey("dbo.AspNetUserRoles", "RoleId", "dbo.AspNetRoles");

DropIndex("dbo.AspNetUserLogins", new[] { "UserId" });

DropIndex("dbo.AspNetUserClaims", new[] { "UserId" });

DropIndex("dbo.AspNetUsers", "UserNameIndex");

DropIndex("dbo.AspNetUserRoles", new[] { "RoleId" });

DropIndex("dbo.AspNetUserRoles", new[] { "UserId" });

DropIndex("dbo.AspNetRoles", "RoleNameIndex");

DropTable("dbo.AspNetUserLogins");

DropTable("dbo.AspNetUserClaims");

DropTable("dbo.AspNetUsers");

DropTable("dbo.AspNetUserRoles");

DropTable("dbo.AspNetRoles");

}

当我使用Microsoft.AspNet.Identity.EntityFramework的versión1.0.0.0时,更新数据库的代码是不同的,我没有任何问题

public override void Up()

{

CreateTable(

"dbo.AspNetRoles",

c => new

{

Id = c.String(nullable: false, maxLength: 128, storeType: "nvarchar"),

Name = c.String(nullable: false, maxLength: 256, storeType: "nvarchar"),

})

.PrimaryKey(t => t.Id);

CreateTable(

"dbo.AspNetUsers",

c => new

{

Id = c.String(nullable: false, maxLength: 128, storeType: "nvarchar"),

UserName = c.String(maxLength: 256, storeType: "nvarchar"),

PasswordHash = c.String(maxLength: 256, storeType: "nvarchar"),

SecurityStamp = c.String(maxLength: 256, storeType: "nvarchar"),

Discriminator = c.String(nullable: false, maxLength: 128, storeType: "nvarchar"),

})

.PrimaryKey(t => t.Id);

CreateTable(

"dbo.AspNetUserClaims",

c => new

{

Id = c.Int(nullable: false, identity: true),

ClaimType = c.String(maxLength: 256, storeType: "nvarchar"),

ClaimValue = c.String(maxLength: 256, storeType: "nvarchar"),

User_Id = c.String(nullable: false, maxLength: 128, storeType: "nvarchar"),

})

.PrimaryKey(t => t.Id)

.ForeignKey("dbo.AspNetUsers", t => t.User_Id, cascadeDelete: true)

.Index(t => t.User_Id);

CreateTable(

"dbo.AspNetUserLogins",

c => new

{

UserId = c.String(nullable: false, maxLength: 128, storeType: "nvarchar"),

LoginProvider = c.String(nullable: false, maxLength: 128, storeType: "nvarchar"),

ProviderKey = c.String(nullable: false, maxLength: 128, storeType: "nvarchar"),

})

.PrimaryKey(t => new { t.UserId, t.LoginProvider, t.ProviderKey })

.ForeignKey("dbo.AspNetUsers", t => t.UserId, cascadeDelete: true)

.Index(t => t.UserId);

CreateTable(

"dbo.AspNetUserRoles",

c => new

{

UserId = c.String(nullable: false, maxLength: 128, storeType: "nvarchar"),

RoleId = c.String(nullable: false, maxLength: 128, storeType: "nvarchar"),

})

.PrimaryKey(t => new { t.UserId, t.RoleId })

.ForeignKey("dbo.AspNetRoles", t => t.RoleId, cascadeDelete: true)

.ForeignKey("dbo.AspNetUsers", t => t.UserId, cascadeDelete: true)

.Index(t => t.UserId)

.Index(t => t.RoleId);

}

public override void Down()

{

DropForeignKey("dbo.AspNetUserRoles", "UserId", "dbo.AspNetUsers");

DropForeignKey("dbo.AspNetUserLogins", "UserId", "dbo.AspNetUsers");

DropForeignKey("dbo.AspNetUserClaims", "UserId", "dbo.AspNetUsers");

DropForeignKey("dbo.AspNetUserRoles", "RoleId", "dbo.AspNetRoles");

DropIndex("dbo.AspNetUserLogins", new[] { "UserId" });

DropIndex("dbo.AspNetUserClaims", new[] { "UserId" });

DropIndex("dbo.AspNetUsers", "UserNameIndex");

DropIndex("dbo.AspNetUserRoles", new[] { "RoleId" });

DropIndex("dbo.AspNetUserRoles", new[] { "UserId" });

DropIndex("dbo.AspNetRoles", "RoleNameIndex");

DropTable("dbo.AspNetUserLogins");

DropTable("dbo.AspNetUserClaims");

DropTable("dbo.AspNetUsers");

DropTable("dbo.AspNetUserRoles");

DropTable("dbo.AspNetRoles");

}

任何人都可以帮助我尝试解决问题吗?

提前致谢!!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值