Nella nostra applicazione aziendale gestiamo immagini e video. Ho creato il modello Entity Framework basato su questa risposta:
https://stackoverflow.com/a/6241232/3850405
So che questo si tradurrà in varbinary(MAX)
che ha un limite di circa 2 GB dal momento che EF non supporta FILESTREAM
out of the box.
https://stackoverflow.com/a/5723825/3850405
Ciò che non riesco a trovare, tuttavia, è quale è la dimensione massima raccomandata del file? So che questo potrebbe cadere in base all'opinione, ma spero che il contesto dato lo consenta. Per le immagini stavo pensando a circa 5 mb e video a 200 mb e li ho recuperati solo quando l'utente vuole vederli (il nome verrà mostrato in Front End).
Questa è una buona soluzione o dovrei ripensarci tutto questo insieme? Sarebbe utile implementare FILESTREAM
anche se non è supportato di default?
Modello attuale:
public class Media
{
[Key]
public int Id { get; set; }
public DateTime Created { get; set; }
public DateTime Updated { get; set; }
public virtual ICollection<Image> Images { get; set; }
public virtual ICollection<Video> Videos { get; set; }
}
public class Image
{
[Key]
public int Id { get; set; }
public DateTime Created { get; set; }
public DateTime Updated { get; set; }
public string Name { get; set; }
public virtual byte[] Image { get; set; }
public int MediaId { get; set; }
public virtual Media Media { get; set; }
}
public class Video
{
[Key]
public int Id { get; set; }
public DateTime Created { get; set; }
public DateTime Updated { get; set; }
public string Name { get; set; }
public virtual byte[] Video { get; set; }
public int MediaId { get; set; }
public virtual Media Media { get; set; }
}
Non esiste un modo oggettivo per decidere quale dovrebbe essere il tuo massimo.
Solo SQL fornisce ciò che è richiesto dai dati in ogni caso, quindi se hai usato varbinary(max)
per il tipo di dati della colonna e hai solo un file video da 200 MB, non importa che il campo abbia una capacità di 2 GB perché è solo usando 200 MB.
Con questo in mente, suggerirei di usare varbinary (max) in ogni caso, a meno che tu non sappia esattamente quanto grande sarà ogni file. In questo modo puoi essere sicuro che ci sarà spazio per te e che i tuoi dati non saranno troncati per adattarsi.