有没有办法在插入之前获取表项ID?

时间:2013-06-11 06:40:47

标签: asp.net sql

我正在尝试将条目保存到数据库,并且有一个图像文件随之一起(上传到文件夹中)。我希望图像文件路径也保存在数据库中,但问题是,我希望文件名使用条目的ID(PhotoId),以确保图像文件名始终是唯一的。我有这个代码,因为还没有生成PhotoId所以没有真正起作用,所以保存的图像都有0.jpg的文件名。

无论如何我可以肯定地预测id,所以我可以将它放入数据库条目的文件名字段中吗?否则,这是一个问题。

            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");

2 个答案:

答案 0 :(得分:2)

通常,您将保存数据库记录,获取ID,然后保存文件名。如果必须,请使用路径更新记录。

但是如果路径总是相同的,除了ID,为什么要将它保存到数据库?

答案 1 :(得分:0)

选择表记录的数量并为其添加+1。 你可以得到。

最好生成GUID或添加DateTime