Questa è la mia lezione brevemente:
public class UploadFile
{
public int Id { get; set; }
public TinyBlog2User User { get; set; } //this user is extend from IdentityUser
public byte[] md5 { get; set; }
public string Uri { get; set; }
public string ThumbnialUri { get; set; }
}
Quindi ho caricato un file e salvato l'URL del file nel database in questo modo:
UploadFile uploadedFile = new UploadFile()
{
md5 = md5Value,
Uri = fileBlob.Uri.ToString(),
User = currentUser,
ThumbnialUri = thumbnailBlob.Uri.ToString()
};
_dbContext.uploadFiles.Add(uploadedFile);
_dbContext.SaveChanges();
Ma nella colonna "userId" della mia tabella uploadFile è sempre nullo. Sono nuovo arrivato a ASP.NET Core, puoi dirmi cosa non funziona nel mio codice? Grazie mille!
Scrivi il tuo modello UploadFile
come segue:
public class UploadFile
{
public int Id { get; set; }
public string UserId { get; set; }
public byte[] md5 { get; set; }
public string Uri { get; set; }
public string ThumbnialUri { get; set; }
public ApplicationUser ApplicationUser { get; set; } //this user is extend from `IdentityUser`
}
Quindi nella configurazione di DbConext
.
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<UploadFile>()
.HasOne(uf => uf.ApplicationUser)
.WithMany()
.HasForeignKey(uf => uf.UserId);
}
Ora esegui una nuova migrazione!
E modifica il tuo codice di metodo FileUpload come segue:
UploadFile uploadedFile = new UploadFile()
{
md5 = md5Value,
Uri = fileBlob.Uri.ToString(),
UserId = currentUser.Id, // Here set the current logged in UserId
ThumbnialUri = thumbnailBlob.Uri.ToString()
};
_dbContext.uploadFiles.Add(uploadedFile);
_dbContext.SaveChanges();
Nota: se hai bisogno di come ottenere corrente loggato UserId
allora Eccolo