2011-03-11 3 views
3

Je crée un modèle de données d'entité pour un document. Je veux stocker le corps du document en tant que BLOB - les corps de document seront plus grands que le maximum varbinary. Comme je comprends les choses, ce que je dois faire est de créer une propriété de type Image pour stocker le corps du document.Entity Framework 4: Type d'image?

Voici mon problème: Les types répertoriés dans le volet Propriétés ne comprennent pas un type Image:

enter image description here

Est-ce EF4 reconnaître un type Image? Si oui, comment créer une propriété d'entité de type Image? Merci de votre aide.

Répondre

7

Image est dépréciée, vous devez utiliser varbinary(MAX) à la place - mais si vous utilisez des fichiers de plus de 2 Go (comme vous êtes apparemment depuis varbinary(MAX) serait par ailleurs suffisante) vous devriez probablement contourner ce tout à fait et les enregistrer sur le disque - avec SQL plaine Server 2008 Je suggérerais un filestream.

Selon cette approche this article travaillera également pour Entity Framework (bien que l'article fait référence à une version plus ancienne EF et je n'ai pas essayé personnellement)

+0

+1 vous étiez le premier –

+0

Merci - Je pense que j'ai mal compris les limites. Mes données ne sont en réalité que de 100K, donc varbinary (MAX) devrait fonctionner plutôt bien. –

2

varbinary(max) est remplacement de type Image. La taille de stockage de varbinary(max) est 2^31 - 1 Bytes => 2GB. ça devrait être suffisant. Le type Image est obsolète et sera probablement supprimé dans la future version du serveur SQL. Utilisez le type Binary pour vos données et définissez sa longueur sur Max.

Btw. travailler avec une telle quantité de données dans EF peut être une très mauvaise idée.

+0

Merci - Je ne savais pas qu'EF avait un problème avec les données BLOB. Pourriez-vous me diriger vers un billet de blog ou un article, afin que je puisse en apprendre plus à ce sujet? +1 pour le pourboire –

+1

@David: J'avais peur que vous vouliez travailler avec de gros blobs. 100K devrait être OK mais vous devriez toujours travailler très soigneusement avec des projections dans les requêtes ou la division des tables afin que le blob ne soit chargé que lorsque cela est vraiment nécessaire. –