2016-05-01 11 views
0

私はSQL Server 2012データベースにファイルをアップロードするASP.NET MVCプロジェクトを作成しました。 AspNetUsersテーブルとの関係で "Conversion"という名前のテーブルを作成しました。この時点でファイルをアップロードできましたが、データベースにUserIDを追加できません。 は、これは私の変換クラスです:MVCユーザーIDを含むファイルをアップロード

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; } 
} 

マイUploadViewModel:

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

そして、これが私の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."); 
    } 

私はconversion.UserID = User.Identity.GetUserName();と試みたが、それが動作していない、私が得ました次のエラー:

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

私はconversion.UserID = User.Identity.GetUserNameを使用していない場合はそれは)(db.SaveChanges();

で起こります。私は

をconversion.UserID = User.Identity.GetUserName()に置き換え、それを動作させるために有効してきた私のデータベース

+0

しかし、動作していません。適切な説明ではありません。何が起こっている?エラーはありますか?値は 'null'ですか? –

+0

内部の例外は何ですか? User.Identity.GetUserName();は何を返しますか? –

+0

User.Identity.GetUserName();ログに記録されたユーザーのユーザー名を正しく返しています!私はデバッグ時にそれを確認しました! – Huby03

答えて

0

にはnullを取得します。

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

私はUserIdの代わりにUserNameを取得していました!それは今働いている!

関連する問題