gpt4 book ai didi

c# - ASP.NET 添加迁移在 IdentityModels.cs 更改上生成空迁移

转载 作者:太空宇宙 更新时间:2023-11-03 12:34:40 30 4
gpt4 key购买 nike

我一直在对 IdentityModels.cs 进行一些更改。大多数情况下只是忽略几个字段并将表从“AspNetUsers”重命名为“Users”。但是在我保存这些更改、构建项目并生成迁移后,它只是空的..

我对 IdentityModels.cs 所做的更改如下:

public class ApplicationUser : IdentityUser
{
public virtual List<Bestelling> Bestellingen { get; set; }

public async Task<ClaimsIdentity> GenerateUserIdentityAsync(UserManager<ApplicationUser> manager)
{
// Note the authenticationType must match the one defined in CookieAuthenticationOptions.AuthenticationType
var userIdentity = await manager.CreateIdentityAsync(this, DefaultAuthenticationTypes.ApplicationCookie);
// Add custom user claims here
return userIdentity;
}
}

我基本上在这里添加了 1 行,公共(public)虚拟列表。

然后我还添加了:

protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
base.OnModelCreating(modelBuilder);
modelBuilder.Entity<IdentityUser>().Ignore(c => c.EmailConfirmed)
.Ignore(c => c.PhoneNumber)
.Ignore(c => c.PhoneNumberConfirmed)
.Ignore(c => c.TwoFactorEnabled)
.Ignore(c => c.LockoutEnabled)
.Ignore(c => c.LockoutEndDateUtc);

modelBuilder.Entity<IdentityUser>().ToTable("Users");
}

正如我所说,只是忽略一些字段并将表重命名为 Users。之后我就全部保存,构建项目并输入

add-migration database-v2

之后

update-database

但是没有任何反应,因为迁移看起来像这样:

namespace Eindopdracht.Migrations
{
using System;
using System.Data.Entity.Migrations;

public partial class databasev2 : DbMigration
{
public override void Up()
{
}

public override void Down()
{
}
}
}

现在在其他模型中我已经添加了例如这个位:

public virtual DbSet<Klant> Klants { get; set; }

但我不知道要在 IdentityModels.cs 中添加什么才能使它们组合在一起。

我已经在 Stack Overflow 上查看了其他问题,但我真的找不到解决方案。

编辑

我的 ApplicationDbContext() 的内容:

public class ApplicationDbContext : IdentityDbContext<ApplicationUser>
{
public ApplicationDbContext()
: base("name=DatabankEntities", throwIfV1Schema: false)
{
}

public static ApplicationDbContext Create()
{
return new ApplicationDbContext();
}

protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
base.OnModelCreating(modelBuilder);
modelBuilder.Entity<ApplicationUser>().Ignore(c => c.EmailConfirmed)
.Ignore(c => c.PhoneNumber)
.Ignore(c => c.PhoneNumberConfirmed)
.Ignore(c => c.TwoFactorEnabled)
.Ignore(c => c.LockoutEnabled)
.Ignore(c => c.LockoutEndDateUtc);

modelBuilder.Entity<ApplicationUser>().ToTable("Users");
}
}

编辑二

这是我的 Configuration.cs:

namespace Eindopdracht.Migrations
{
using System;
using System.Data.Entity;
using System.Data.Entity.Migrations;
using System.Linq;

internal sealed class Configuration : DbMigrationsConfiguration<Eindopdracht.Models.DatabankBestellijn>
{
public Configuration()
{
AutomaticMigrationsEnabled = true;
}

protected override void Seed(Eindopdracht.Models.DatabankBestellijn context)
{
// This method will be called after migrating to the latest version.

// You can use the DbSet<T>.AddOrUpdate() helper extension method
// to avoid creating duplicate seed data. E.g.
//
// context.People.AddOrUpdate(
// p => p.FullName,
// new Person { FullName = "Andrew Peters" },
// new Person { FullName = "Brice Lambson" },
// new Person { FullName = "Rowan Miller" }
// );
//
}
}
}

我改变了

internal sealed class Configuration : DbMigrationsConfiguration<Eindopdracht.Models.DatabankBestellijn>

比特:

internal sealed class Configuration : DbMigrationsConfiguration<Eindopdracht.Models.ApplicationDbContext>

而且有效!但是我现在无法更新数据库,因为它说这些表已经存在,有没有办法强制执行它?

update-database -Force

似乎不是要走的路。

最终编辑

解决方案是更改 configuration.cs 文件并在 IdentityModels.cs 中进行微小更改。感谢您的帮助

最佳答案

问题出在您的 OnModelCreating 方法中

modelBuilder.Entity<IdentityUser>().

您在应该使用 ApplicationUser 的地方引用 IdentityUser

所以你的 OnModelCreating 变成了

protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
base.OnModelCreating(modelBuilder);
modelBuilder.Entity<ApplicationUser>().Ignore(c => c.EmailConfirmed)
.Ignore(c => c.PhoneNumber)
.Ignore(c => c.PhoneNumberConfirmed)
.Ignore(c => c.TwoFactorEnabled)
.Ignore(c => c.LockoutEnabled)
.Ignore(c => c.LockoutEndDateUtc);

modelBuilder.Entity<ApplicationUser>().ToTable("Users");
}

关于c# - ASP.NET 添加迁移在 IdentityModels.cs 更改上生成空迁移,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41488944/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com