Comment stocker des images en utilisant Entity Framework Code First CTP 5?

J’essaie juste de savoir s’il existe un moyen simple de stocker et de récupérer des données binarys (fichiers) à l’aide d’EF Code First CTP 5? J’aimerais vraiment qu’il utilise le type FILESTREAM, mais je cherche vraiment un moyen de le faire fonctionner.

Vous ne pouvez pas utiliser SQL FILESTREAM dans EF. EF est supposé fonctionner sur différents serveurs de bases de données, mais la fonctionnalité filestream est une fonctionnalité spécifique de SQL 2008 et versions ultérieures. Vous pouvez essayer de le faire à l’ancienne: utilisez varbinary(max) dans votre table de firebase database et utilisez un tableau d’octets dans votre classe mappée.

Modifier:

Petite précision – vous pouvez utiliser FILESTREAM dans la firebase database, mais EF ne profitera pas de la diffusion en continu. Il le chargera en standard varbinary(max) .

Je crée toujours une autre classe comme ProductImage avec une association one-to-one afin de gérer le chargement paresseux et de normaliser la table:

 public class ProductImage { public int ProductId { get; private set; } public byte[] Image { get; set; } } 

Déclarez simplement votre propriété comme octet [] comme mentionné par Ladislav.

 public class Product { public int Id { get; private set; } public ssortingng Name { get; set; } public byte[] ProductImage { get; set; } } 

C’est à peu près tout. Si vous ne varbinary(max) pas la propriété, la convention correspond à un varbinary(max) . Si vous avez déjà une colonne d’image dans la firebase database, ajoutez simplement [Column(TypeName = "image")] sur la propriété ProductImage ou si vous préférez un mappage de code, ajoutez ceci à votre remplacement OnModelCreating dans la classe de contexte:

 modelBuilder.Entity().Property(p => p.ProductImage).HasColumnType("image"); 

Le problème que j’ai avec cela est que je n’ai pas trouvé de moyen de rendre la propriété paresseuse car je ne veux pas nécessairement charger des données binarys chaque fois que je récupère un produit. Je ne suis pas sûr de me rappeler correctement, mais NHibernate peut le faire dès la sortie de la boîte.