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
_aber es funktioniert nicht _ ist keine geeignete Erklärung. Was ist los? Gibt es einen Fehler? Ist der Wert "null"? –
Sie müssen mehr Details zur Verfügung stellen - was ist die innere Ausnahme? Und was gibt 'User.Identity.GetUserName();' zurück? –
User.Identity.GetUserName(); gibt den Benutzernamen des angemeldeten Benutzers korrekt zurück! Ich habe es beim Debuggen verifiziert! – Huby03