2013-07-25 8 views
0

Я добавляю строку в видео, а затем я хочу использовать тот же 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); 
    } 

ответ

1

Если предположить, что у вас есть авто приращения первичного ключа 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); 
    } 
+0

Я забыл, что v является ссылкой. Это означает, что я могу изменить его после добавления в Видео. Что касается вашего предложения по простому сохранению расширения файла. Я это сделаю. Делает совершенный смысл. Благодарю. – TheColonel26

Смежные вопросы