2016-11-06 11 views
0

ASP.netコアで、フィールドをiFormFileから文字列に変更するモデルクラスを更新しようとしています。 すなわち代わりに画像ファイルの代わりにファイル名を保存するcomment に応答します。asp.netコアでデータベースマイグレーションを実行できません[列NULL]

モデルクラスを更新してそれに応じて変更を行った後、ウェブページはデータベース/マイグレーションの更新を促しました。

まず、誰かがそれが移行によって何を意味しているの情報に私を指すことができますか?

コマンドに

dotnet ef database update 

を入力した後、私は次のエラーを受け取るの下に第二に、私は次のエラーを持っている:

Cannot insert the value NULL into column 'StaffID', table 'aspnet- 
newbienoob-59e13649-49be-4a5f-9365-d1b8cc6588d5.dbo.Employee'; 
column does not allow nulls. UPDATE fails. 

答えて

0

おかげTEMI。

データベースの移行が失敗しました。

生成されたcsファイルでup()およびdown()メソッドが実行する移行の意味を理解した後で、私は自分でSQL文を変更しました。

ie。

public partial class initial2 : Migration 
{ 
    protected override void Up(MigrationBuilder migrationBuilder) 
    { 

     migrationBuilder.DropColumn(
      name: "StaffID", 
      table: "Employee"); 

     migrationBuilder.AddColumn<string>(
      name: "StaffIdentity", 
      table: "Employee", 
      nullable: true, 
      defaultValue: ""); 
    } 
} 

基本的には、すべての移行をロールバックして、テーブルを更新するための新しい移行を再実行することでした。

ie。 dotnet ef migrations remove

私は元のテーブルから最初から元に戻すことができます。

0

私はあなたのコードの最初の移行を使用してデータベースを作成していると信じています。まず、IformFileデータ型を使用するモデルから、文字列データ型を使用するモデルにデータベースを移行する必要があります。

コマンドプロンプトで次の構文を使用します。 dotnet ef migrationsに[マイグレーション名]を追加します。そう

dotnet ef migrations add myfirstmigration

ない最高の移行名似ていますが、あなたのアイデアを得ます。 次に、すでに行ったようにデータベースを更新します。返信用

dotnet ef database update

+0

私は実際にそれをしました。私はまだ、次のような問題 誤差は、入力項目が.NETCoreAppためnewbienoobをコンパイル最後のビルド から追加されたので プロジェクトnewbienoob(.NETCoreApp、バージョン= v1.0のは)、バージョン= v1.0の コンパイルをコンパイルされますされてい成功した。 00:02.7244932 System.Data.SqlClient.SqlException:カラムにNULL値を挿入できません 'StaffID'、テーブル「ASPNET-newbienoob-59e13649-49be 0警告(S) 0エラー(S) 時間00を経過しました-4a5f-9365-d1b8cc6588d5.dbo.Employee ';列はNULLを許可しません。 UPDATEに失敗します。 ステートメントが終了しました。 –

+0

いくつかのデータベース移行が失敗したようです。 –

関連する問題