2017-12-08 4 views
1

オンラインWebショップのデータベースに画像を追加しようとしています(私のデータベースに製品の詳細がすべて欲しいので、いくつかの場所でデータを使用することができます - 私はDRY原理)。最初に「Add-Migration Image」を試しました。しかし、それは画像とともに線を落とす。何故ですか?なぜデータベースDropcolumn Entity Frameworkですか?

ここ
public class Product 
{ 
    [Key] 
    public int ProductID { get; set; } 

    [Required(ErrorMessage = "Please enter an product name")] 
    public string Name { get; set; } 

    [Required(ErrorMessage = "Please specify a category")] 
    public string Category { get; set; } 

    public string SubCategory { get; set; } 

    [Required(ErrorMessage = "Please enter a description")] 
    public string Description { get; set; } 

    [Required 
    (ErrorMessage = "Please enter a positive price")] 
    public decimal Price { get; set; } 

    public byte[] Image { get; set; } 

    public string ImageSourceFileName { get; set; } 

    public string ImageContentType { get; set; } 
} 

それを実現した

は、ここに私のProductエンティティです。データベースは最初に新しい行をドロップします。何故ですか?そして私はどうしたら違うのでしょうか?

public partial class Image2 : Migration 
{ 
    protected override void Up(MigrationBuilder migrationBuilder) 
    { 
     migrationBuilder.AddColumn<byte[]>(
      name: "Image", 
      table: "Products", 
      type: "varbinary(max)", 
      nullable: true); 

     migrationBuilder.AddColumn<string>(
      name: "ImageContentType", 
      table: "Products", 
      type: "nvarchar(max)", 
      nullable: true); 

     migrationBuilder.AddColumn<string>(
      name: "ImageSourceFileName", 
      table: "Products", 
      type: "nvarchar(max)", 
      nullable: true); 
    } 

    protected override void Down(MigrationBuilder migrationBuilder) 
    { 
     migrationBuilder.DropColumn(
      name: "Image", 
      table: "Products"); 

     migrationBuilder.DropColumn(
      name: "ImageContentType", 
      table: "Products"); 

     migrationBuilder.DropColumn(
      name: "ImageSourceFileName", 
      table: "Products"); 
    } 
} 

最終的に、私はCreate-Edit-Delete-Viewsで画像を追加したいと思っています。

これが私のプロセスです:

  1. 第1の画像列でデータベースを更新します。
  2. コントローラーとビューを変更して、イメージを処理できるようにします。

上記を参照してください。

答えて

0

移行には上下の2つの部分が含まれています。

アップは、データベースに新しい変更を加える部分です。

downの部分は、の元に戻すの部分です。したがって、移行をロールバックする場合は、メソッドが呼び出されます。論理的には、ロールバックとは新しく追加された列を削除することを意味します。

以前のバージョンにロールバックしない限り、のダウンメソッドは呼び出されません。

+0

ありがとうございました!私は見る - しかし、私はどうすれば変更を行うのですか?私はコンソールで "Add-Migration Image"を使用しました。 – dodido

+0

私はこれについてもう少し考えました。 「Add-Migration Image」にロールバックコールがありますか?私はそれを見ませんか? – dodido

+0

'update-Database -TargetMigration:" OldVersion "のような古いバージョンに移行する場合にのみ、ロールバックを行います。 'Down'メソッドは、プログラムのインストール時にPC上に置かれた_uninstall_ファイルと考えることができます。プログラムを削除するまで、それらを使用することはありません。 – oerkelens

関連する問題