My idea is to upload all files in one table and store their Ids in the related tables. for example,
public class ApplicationUser : IdentityUser { [Required, StringLength (50)] [Display (Name = "First Name")] public string FirstName { get; set; } public long UserAvatarId { get; set; } public virtual ICollection<FileUpload> UploadedFiles { get; set; } }
UserAvatarId is just a property that is related to the File Upload TableRecordId.
public class FileUpload { [Key, DatabaseGenerated (DatabaseGeneratedOption.None)] public long RecordId { get; set; } public string UserId { get; set; } public ApplicationUser User { get; set; } public long RecordKey { get; set; } public long Length { get; set; } public string PhysicalPath { get; set; } public string Name { get; set; } public OffsetDateTime? LastModified { get; set; } public LocalDateTime? ValidUntil { get; set; } public FileCategory FileCategory { get; set; } }
my problem is that how can I tell EF core that if the record in the upload table is deleted to set UserAvatarId to null?
I tried to set up a navigation property like this but EF core gets confused about virtual ICollection<FileUpload>.
public FileUpload UserAvatar { get; set; } builder.Entity<ApplicationUser> () .HasOne (c => c.UserAvatar) .WithOne () .OnDelete (DeleteBehavior.SetNull);