0

我正在向视频添加一行,然后我想使用与视频的物理文件名相同的 ID。所以我需要添加没有文件名的行,然后使用我得到的 ID,然后用文件名更新该行。我现在才确定该怎么做。

    public ActionResult UpVideo(Report Report, string VideoName, HttpPostedFileBase file)
    {
        Video v = new Video();
        v.Name = VideoName;
        v.Report = Report;
        db.Videos.Add(v);

        var filename = v.ID + "." + Path.GetExtension(file.FileName);
        var path = Path.Combine(Server.MapPath("~/App_Data/video_uploads"), filename);
        file.SaveAs(path);

        v.FileName = filename;

        //** update Row here with filename

        db.SaveChanges();


        //** redirect back to Report Details (need to figure out how do do this too)
        return RedirectToAction(Report);
    }
4

1 回答 1

1

假设您的数据库中有一个自动递增的 ID 主键,您需要在引用 ID 属性之前调用保存更改。您必须将实体保存到数据库中,以便分配 ID。

public ActionResult UpVideo(Report Report, string VideoName, HttpPostedFileBase file)
    {
        Video v = new Video();
        v.Name = VideoName;
        v.Report = Report;
        db.Videos.Add(v);
        db.SaveChanges();

        var filename = v.ID + "." + Path.GetExtension(file.FileName);
        var path = Path.Combine(Server.MapPath("~/App_Data/video_uploads"), filename);
        file.SaveAs(path);

        v.FileName = filename;
        db.SaveChanges();   


        //** redirect back to Report Details (need to figure out how do do this too)
        return RedirectToAction(Report);
    }

由于“文件名”只是 ID 和文件扩展名的组合,为什么不保存文件扩展名并在需要引用视频时进行连接。这会将您对数据库的调用减少到一个,并在数据库存储上节省一点

public ActionResult UpVideo(Report Report, string VideoName, HttpPostedFileBase file)
    {
        Video v = new Video();
        v.Name = VideoName;
        v.FileName = Path.GetExtension(file.FileName);
        v.Report = Report;
        db.Videos.Add(v);
        db.SaveChanges();

        var filename = v.ID + "." + v.FileName;
        var path = Path.Combine(Server.MapPath("~/App_Data/video_uploads"), filename);
        file.SaveAs(path);


        //** redirect back to Report Details (need to figure out how do do this too)
        return RedirectToAction(Report);
    }
于 2013-07-25T21:43:04.800 回答