2016-12-31 3 views
0

テーブルに新しい列を追加するまで、すべて正常に動作していました。私はモデルクラスを更新する方法を見つけることができませんでしたので、モデルに列を追加しました。しかし今、私のアプリケーションを実行すると、私はエラーが発生します: "オブジェクト参照がオブジェクトのインスタンスに設定されていません。"コンテキストオブジェクトは、テーブルから行をフェッチなく、このオブジェクト参照エラーを与えているテーブルに列を追加した後のDbContextのエラー

MyDbContext context = new MyDbContext(db); 

は、デバッグ時には、私はそれが私のdbcontextのインスタンスの作成に問題があることがわかりました。

モデルクラスから新しい列を削除すると、正常に動作します。これは、私のデータベースとモデルが同期していないことを示し、アプリケーションが古いテーブルデザインを使用しているようです。

また、CLIコマンドを使用してデータベースを更新しようとしていますが、それにも問題があります。

テーブルの列が追加されたら、誰もモデルクラスとテーブルのデザインを同期させる方法を提案できますか?私はASP.NET CoreとEF Coreを使用しています。

ありがとうございます。

+0

あなたは一度足場をつけて、コードの最初のアプローチ(コードのモデルを変更してマイグレーション+ dbアップデートを実行する)を使用し、DB内の列を決して変更しないでください。 – Tseng

+0

これで、今すぐ列を削除してから私のモデルクラスを作成し、マイグレーションを実行しますか?どのようにマイグレーション+ dbの更新を実行するか?私にお知らせください。 – user6542823

+0

私はコマンドを使用しようとしています:dotnet ef database update -c MyDbContextしかし、 '値はnullにはできませんパラメータ名:connectionString' – user6542823

答えて

0

これを解決できました。私がクラスファイルに追加したプロパティはintで、テーブルの列もintでした。しかし、クラスファイルでは、intを実行することによってnull可能なプロパティであるとは言及していませんでしたか? 。テーブルの値はすべてNullで、プロパティはnull可能なプロパティではないため、この問題が発生しました。

したがって、テーブルに新しい列を追加し、クラスファイル内の一致するプロパティを追加することができます。これは問題ではありません。ちょうど(nullableを持つ)データ型が一致していることを確認する必要があります。

0

正確な問題を見つけるために試してみてください。

この問題は、データベースのスキーマとコードレベルのスキーマが変更されたために発生します。この行を追加する必要があります。

Database.SetInitializer<yourDbName>(new DropCreateDatabaseIfModelChanges<yourDbName>()); 

データベースを同期させます。

関連する問題