2016-05-01 18 views
0

Ich habe ein ASP.NET MVC-Projekt erstellt, wo ich Dateien in einer SQL Server 2012-Datenbank hochladen. Ich habe eine Tabelle namens "Conversion" mit einer Beziehung zur AspNetUsers-Tabelle erstellt. Ich konnte an dieser Stelle die Datei hochladen, aber ich kann die Benutzer-ID nicht in meiner Datenbank hinzufügen. Dies ist meine Conversion-Klasse:MVC Hochladen einer Datei mit UserID

public class Conversion 
{ 
    public int ConversionID { get; set; } 
    [StringLength(255)] 
    public string FileName { get; set; } 
    public byte[] File { get; set; } 
    public string UserID { get; set; } 
    [ForeignKey("UserID")] 
    public virtual ApplicationUser User { get; set; } 
} 

Mein UploadViewModel:

public class UploadViewModels 
{ 
    [DisplayName("Select File to Upload")] 
    public HttpPostedFileBase File { get; set; } 
} 

Und das ist mein UploadController:

public class UploadController : Controller 
{ 
    private ApplicationDbContext db = new ApplicationDbContext(); 
    public ActionResult Index() 
    { 
     var model = new UploadViewModels(); 
     return View(model); 
    } 

    [HttpPost] 
    public ActionResult Index(UploadViewModels model) 
    { 
     if (!ModelState.IsValid) 
     { 
      return View(model); 
     } 
     Conversion conversion = new Conversion(); 

     byte[] uploadFile = new byte[model.File.InputStream.Length]; 
     model.File.InputStream.Read(uploadFile, 0, uploadFile.Length); 

     conversion.FileName = model.File.FileName; 
     conversion.File = uploadFile; 
     //conversion.UserID = User.Identity.GetUserName(); 

     db.Conversions.Add(conversion); 
     db.SaveChanges(); 

     return Content("File Uploaded."); 
    } 

Ich habe versucht, mit conversion.UserID = User.Identity.GetUserName(); aber es funktioniert nicht, ich habe die folgender Fehler:

"An exception of type 'System.Data.Entity.Infrastructure.DbUpdateException' occurred in EntityFramework.dll but was not handled in user code".

Es passiert bei der db.SaveChanges();

Wenn ich nicht die conversion.UserID = User.Identity.GetUserName(); Ich erhalte eine Null in meiner Datenbank

+0

_aber es funktioniert nicht _ ist keine geeignete Erklärung. Was ist los? Gibt es einen Fehler? Ist der Wert "null"? –

+0

Sie müssen mehr Details zur Verfügung stellen - was ist die innere Ausnahme? Und was gibt 'User.Identity.GetUserName();' zurück? –

+0

User.Identity.GetUserName(); gibt den Benutzernamen des angemeldeten Benutzers korrekt zurück! Ich habe es beim Debuggen verifiziert! – Huby03

Antwort

0

ich bin ermöglicht es, i

conversion.UserID = User.Identity.GetUserName() ersetzt funktioniert;

mit

conversion.UserID = User.Identity.GetUserId();

Ich bekam den Benutzernamen anstelle der UserId! Es funktioniert jetzt!

Verwandte Themen