0

エントリをデータベースに保存しようとしていますが、それに付随する (フォルダにアップロードされた) 画像ファイルがあります。画像ファイルのパスもデータベースに保存したいのですが、問題は、画像ファイル名が常に一意になるように、ファイル名にエントリの ID (PhotoId) を使用することです。PhotoIdがまだ生成されていないため、実際には機能しないこのコードがあり、保存された画像はすべて0.jpgのファイル名を持っています。

とにかくIDを確実に予測できるので、データベースエントリのファイル名フィールドに入れることができますか? それ以外の場合はキャッチ 22 です。

            if (!Directory.Exists(Server.MapPath("~/App_Data/" + photo.ClientId)))
            {
                Directory.CreateDirectory(Server.MapPath("~/App_Data/") + photo.ClientId);
            }
            var FileExt = Path.GetExtension(photo.File.FileName);
            var FilePath = Path.Combine(Server.MapPath("~/App_Data/" + photo.ClientId), photo.PhotoId.ToString()) + FileExt;
            photo.File.SaveAs(FilePath);
            var ThumbFilePath = Path.Combine(Server.MapPath("~/App_Data/" + photo.ClientId),photo.PhotoId.ToString() + "_thumbnail") + FileExt;
            PhotoTools.MakeThumbnail(FilePath, ThumbFilePath, 0.15);

            //Finally update database
            photo.FilePath = FilePath;
            db.Photos.Add(photo);
            db.SaveChanges();
            return RedirectToAction("Create");
4

2 に答える 2

2

通常、データベース レコードを保存し、ID を取得してから、ファイル名を保存します。必要に応じて、パスを使用してレコードを更新します。

しかし、ID を除いてパスが常に同じである場合、なぜそれをデータベースに保存するのでしょうか?

于 2013-06-11T06:44:21.553 に答える
0

テーブル レコードの数を選択し、それに +1 を追加します。得られる。

を生成するGUIDか、追加することをお勧めしますDateTime

于 2013-06-11T06:44:09.900 に答える