EF7の多対多関係 - 関連するデータを含むリストの選択クエリ

asp.net-core asp.net-core-mvc c# entity-framework entity-framework-core

質問

私は以下の多対多の関係を持つブログをコンテンツ - >カテゴリテーブルに構築しています。私はEF7でテーブルを生成するために次のコードを使用しました:

public class Category
{
    public int Id { get; set; }
    public string Name { get; set; }

    public virtual ICollection<Categorization> Categorization { get; set; }
}

public class Categorization
{
    public int ContentId { get; set; }
    public Content Content { get; set; }

    public int CategoryId { get; set; }
    public Category Category { get; set; }
}

public class Content
{
    [Key]
    public int Id { get; set; }
    public string Title { get; set; }
    public string Excerpt { get; set; }
    public string Body { get; set; }

    ...

    public virtual ICollection<Categorization> Categorization { get; set; }
}

しかし、次のようにEF7クエリに関連付けられたコンテンツを含むカテゴリのリストを読み込もうとすると、エラーが発生します。

categories = await _db.Categories
                      .Include(c => c.Categorization)
                      .ThenInclude(c => c.Content)
                      .OrderByDescending(c => c.Categorization.Count)
                      .ToListAsync();

これは、これが呼び出されたときに取得するエラーページです。

要求の処理中にデータベース操作が失敗しました。

AggregateException:1つ以上のエラーが発生しました。 AggregateException:1つ以上のエラーが発生しました。 AggregateException:1つ以上のエラーが発生しました。 AggregateException:1つ以上のエラーが発生しました。 SqlException:列名 'Id'が無効です。 ApplicationDbContext Scaffoldのモデル変更が保留中です。これらの変更のための新しい移行が、コマンドラインからデータベースに適用されます。

dnx ef migrations add [migration name] 
dnx ef database update

興味深い注記:私が行を削除するとき

 .Include(c => c.Categorization).ThenInclude(c => c.Content)

しかし、時には分類がロードされない場合があり、生成された列挙型の各カテゴリ・クラスでの分類のためのヌル参照しかない場合もあります。

人気のある回答

エラーメッセージにすべてが表示されます。 SqlException:無効な列名 'Id'

データベースはプロジェクトのモデルとは異なります。データベース移行が有効になっている場合は、コマンドを実行します

dnx ef migrations add [migration name] 
dnx ef database update

データベースの移行を使用しない場合は、データベースのモデルをモデルに合わせて更新する必要があります。



Related

ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
このKBは合法ですか? はい、理由を学ぶ
ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
このKBは合法ですか? はい、理由を学ぶ