私は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()に置き換え、それを動作させるために有効してきた私のデータベース
しかし、動作していません。適切な説明ではありません。何が起こっている?エラーはありますか?値は 'null'ですか? –
内部の例外は何ですか? User.Identity.GetUserName();は何を返しますか? –
User.Identity.GetUserName();ログに記録されたユーザーのユーザー名を正しく返しています!私はデバッグ時にそれを確認しました! – Huby03