SQL FileStream + Entity Framework stocker de gros fichiers
Quand je veux enregistrer un fichier dans une colonne filestream, j'ai toujours besoin de lire tout le binaire dans la mémoire:
using (MemoryStream memoryStream = new MemoryStream())
{
sourceStream.CopyTo(memoryStream);
binaryStore.Content = memoryStream.ToArray(); //Content = filestream column
}
est-il un moyen avec l'entity framework, pour mettre le flux directement? Parce que, si je veux télécharger un gros fichier, j'obtiens une exception OutOfMemoryException.
Cela pourrait-il être résolu en utilisant une méthode similaire stackoverflow.com/questions/4441179/... ? Il semble être à l'aide de EntityFramework mélangé avec de l'ancien type de connexion.
oui, si n'est-il pas une autre façon, je vais utiliser cette. merci
oui, si n'est-il pas une autre façon, je vais utiliser cette. merci
OriginalL'auteur Kaffee Bohne | 2012-04-07
Vous devez vous connecter pour publier un commentaire.
Ne vois pas de mise à jour sur FILESTREAM soutien en EF. (Mentionné avant, comme une prise en charge partielle .net 3.5 sp1 version ici). Je suppose que entity framework est l'accès FILESTREAM par TSQL et évident que vous ne serez pas en mesure d'obtenir en continu des avantages de performance de FILESTREAM. (besoin de lire tous les fichiers contenus dans la mémoire)
Ainsi, l'approche recommandée est l'utilisation avec
SqlFileStream
.Net API.http://lennilobel.wordpress.com/2011/08/22/using-sqlfilestream-in-c-to-access-sql-server-filestream-data/
OriginalL'auteur Min Min
EF ne supporte pas de
FIlESTREAM
. Il gère toutes les interactions avec lesFILESTREAM
comme normalVARBINARY(MAX)
colonne donc, si vous voulez utiliser le streaming, vous devez utiliser ADO.NET directement à.Ont également la même question. Est-ce toujours le cas?
Je ne pense pas qu'il y avait un changement, car de la façon dont le vrai flux de fichier fonctionne, mais je n'ai pas utiliser EF pour assez un certain temps, donc j'ai peut-être tort.
Ce lien peut aider, floatincode.net/post/...
OriginalL'auteur Ladislav Mrnka
Vous pouvez faire cependant cela nécessite un peu de travail manuel. Nécessite
FILESTREAM
être activé.https://docs.microsoft.com/en-us/sql/relational-databases/blob/enable-and-configure-filestream
Table, de l'avis de la
unique rowguidcol not null
IdFile colonne qui est nécessaire.Modèle EF, IdFile colonne n'est pas présent, il ne contient que des valeurs par défaut et n'est d'aucune utilité pour nous. Il est seulement utilisé par SQL Server:
VM:
Source:
http://www.floatincode.net/post/sql-file-stream-in-asp.net-mvc-with-entity-framework
OriginalL'auteur Ogglas