2

ID フレームワークを使用してデータベースを作成します (最初にコードを作成します) が、パッケージ マネージャーで以下のコードを実行するとエラーが発生します。

PM> Enable-Migrations -ContextTypeName FreeTime.AspMvc.Context.FreeTimeContext -Force

ここに私のエラーがあります:

  • IdentityUserLogin: : EntityType IdentityUserLoginキーが定義されていません。この のキーを定義しますEntityType

  • IdentityUserRole: : EntityType IdentityUserRoleキーが定義されていません。この のキーを定義しますEntityType

  • IdentityUserLogins: EntityType: EntitySet IdentityUserLoginsIdentityUserLoginキーが定義されていないタイプに基づいています。

  • IdentityUserRoles: EntityType: EntitySet IdentityUserRolesIdentityUserRoleキーが定義されていないタイプに基づいています。

詳しくは:

詳しくは (クリックすると全画面表示になります)

ApplicationUser他のクラスでは、 namedのプロパティ タイプと、witch user has made witch topic を保持するためUserIdの名前付き文字列のタイプの 1 つを作成しました。Userここに例があります:

public class Topic 
{
    [Key]
    public int TopicId { get; set; }

    [ForeignKey("dbo.AspNetUsers.Id")]
    public string UserId { get; set; }

    public ApplicationUser User { get; set; }
}

小さな更新:ここに私のコンテキスト ファイルがあります:

public class FreeTimeContext: DbContext
{
    public DbSet<Topic> Topics { get; set; }

    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
    }
}

という名前の 2 番目のコンテキスト ファイルがあることも確認しましたApplicationDbContext

public class ApplicationDbContext : IdentityDbContext<ApplicationUser>
{
    public ApplicationDbContext()
        : base("FreeTimeContext" /* --> this I've edited into my own name */,
               throwIfV1Schema: false)
    {
    }

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

大きな更新:後の状態で、以下のリストのような他のことを試しました:

  1. 最初に、の移行を有効にしようとしましたApplicationDbContext。これが私が行った手順です。

    • まず、次のコードを実行しました。

      PM> enable-migrations -ContextTypeName FreeTime.AspMvc.Models.ApplicationDbContext -Force

      これはエラーなしで行われます。

    • 次に、これを実行しました:

      PM> add-migration "initAspTables"

      このコードでも問題ありません。

    • 最後に、データベースを更新しました。

      PM> データベースの更新

      こちらも問題なく完了。

    • テーブルがサーバーマネージャーに作成されているかどうかを確認します→確認しますが、独自のテーブルが含まれていません。☹

      データベースとテーブルを含むサーバー マネージャーのオブジェクト エクスプローラー。

    結論:私が持っているものではありません。

  2. 私が行った2番目のことは、以下のようなコードの代わりに継承FreeTimeContextすることです。ApplicationContextDbContext

    パブリック クラス FreeTimeContext: ApplicationDbContext
    {
        public DbSet トピック { get; 設定; }
    
        public FreeTimeContext(): ベース()
        { }
        // その他のコード
    }

    もう一度、次のコードで移行を有効にしてみます。

    PM> enable-migrations -ContextTypeName FreeTime.AspMvc.Context.FreeTimeContext -Force

    しかし、私はこのエラーがあります:

    タイプのForeignKeyAttributeon プロパティが無効です。依存型 でナビゲーション プロパティが見つかりませんでした。Name 値は、有効なナビゲーション プロパティ名である必要があります。UserIdFreeTime.AspMvc.Models.Topicdbo.AspNetUsers.IdFreeTime.AspMvc.Models.Topic

    詳しくは:

    詳しくは(クリックすると全画面表示になります)

    結論:うまくいきませんでした。

手伝って頂けますか?ApplicationUserクラスを自分のクラスと一緒にデータベースに移行するために他に何ができるかわかりません。

4

0 に答える 0