データ永続化のために Entity Framework 5.0 を使用して ASP.Net MVC 4 Web アプリケーションを開発しています。開発中に Code First と Automatic Migrations を使用しています。
既存のデータベースで作業する必要があったため、この役立つチュートリアルを使用して、ドメイン クラス
コードを最初に既存のデータベースに作成しました。
モデルにtblcourseapplicantという名前のクラスがあり、これにはManagerTitleという String プロパティがあります。このデータ型をIntに変更したいのですが、そのために POCO クラスのプロパティを変更しました
から
public string ManagerTitle { get; set; }
に
public int ManagerTitle { get; set; }
次に、Fluent API を使用して、関連するマッピング クラス (tblcourseapplicantMap) のプロパティ属性を変更しました。
から
this.Property(t => t.ManagerTitle).HasMaxLength(5);
に
this.Property(t => t.ManagerTitle).IsRequired();
また、この特定の列のデータベース内のすべてのデータを更新して、すべての値が整数に変換されるようにしました。
プロジェクトを実行すると、自動移行がこの更新を実行しようとしましたが、次のエラーが返されます
値 NULL を列 'ManagerTitle'、テーブル 'tblcourseapplicant' に挿入できません。列はヌルを許可しません。更新は失敗します。ステートメントは終了されました。
データベース テーブルに ManagerTitle が NULL であるレコードがなく、すべて整数値が割り当てられているため、これがなぜなのか理解できません。
どんな助けでも大歓迎です。
ありがとう。
アップデート
皆さん、私はまだこの問題の解決策を見つけるのに苦労しています。戻ってくるエラーはSqlExceptionであることに気付きました。アイデアはありますか?ここで何が問題なのかわかりません。私の理解では、Code First Automatic Migrations はこの単純なプロパティ データ型の変更を処理できるはずです。
ヘルプ!