Domanda

Sto solo cercando di capire se c'è un modo semplice per memorizzare e recuperare dati binari (file) utilizzando EF Codice primo CTP 5? Mi piace molto utilizzare il tipo FILESTREAM, ma sono davvero solo in cerca di un modo per farlo funzionare.

È stato utile?

Soluzione

Non è possibile utilizzare SQL FILESTREAM in EF. EF si suppone che il lavoro sulla parte superiore del server di database diversi, ma funzionalità FILESTREAM è caratteristica specifica di SQL 2008 e più recente. Si può provare a farlo vecchia maniera -. L'uso varbinary(max) nella tabella del database e l'uso di array di byte nella classe mappata

Modifica

Little chiarimento - è possibile utilizzare FILESTREAM nel database, ma EF non approfittare dello streaming. Sarà caricarlo come varbinary(max) standard.

Altri suggerimenti

Ho sempre creare un'altra classe come ProductImage con un'associazione uno-a-uno, al fine di gestire il caricamento pigro e anche per normalizzare la tabella:

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

Basta dichiarare la vostra proprietà come byte [] come detto Ladislav.

public class Product
{
    public int Id { get; private set; }

    public string Name { get; set; }

    public byte[] ProductImage { get; set; }
}

Questo è più o meno di esso. Se non mappare la proprietà la convenzione è associato a un varbinary(max). Se si dispone di una colonna di immagini nel database già basta aggiungere [Column(TypeName = "image")] sulla proprietà productimage o se si preferisce la mappatura del codice aggiungere questo al vostro sostituzione OnModelCreating nella classe del contesto:

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

Il problema che ho con essa è che non ho trovato un modo per rendere la proprietà pigri come Non necessariamente voglio caricare i dati binari ogni volta che vado a prendere un prodotto. Io non sono sicuro che ricordo bene ma NHibernate posso farlo fuori dalla scatola.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top