2012-04-19 14 views
8

Bir dosya depolama uygulaması geliştiriyorum ve FileStream türünü veritabanımıza dahil ettik. Sistemin büyük dosyaları desteklemesi bekleniyor. Uygulamanın bir kısmı, çoklu belgelerin toplu olarak yüklenmesine izin verir. Bu belgeler daha sonra sistem içindeki diğer varlıklar ile bağlantılı olmalıdır.Entity Framework'ün bir FileStream sütununu bayt dizisine yüklemesini nasıl engellerim?

Bir sayfa, kullanıcıların belgeleri birer birer birer nesnelere bağlamasına olanak sağlamak için bağlantısız belgeleri göstermek üzere tasarlanmıştır. Yükleme işlemiyle ilgili bazı yükleme testleri yaptıktan sonra, bu Bağlantılı Olmayan Belgeler sayfasını yüklerken ASP.NET çalışan işleminin bellek ayak izinin bir GB'ın üzerine çıkardığını gördük. Araştırmadan sonra

, varlık Framework bağlantısız belgelerin yüzlerce (bir bayt dizisi dönüştürülür, FileStream dahil) tüm belge satır varlık yükleniyor gibi görünüyor. Depo sınıfımda, bir Modele dönüştürürken bu bayt dizisini kaydetmiyorum, ancak sonra çok geç. EF, zamanı ve belleği, bayt dizisini Depo sınıfı temsiline ayırmak için harcadı.

Ben açıkça bunun için istemedikçe bu bayt dizisi yüklemek için değil EF söyleyebilir bir yolu var mı?

+1

http://stackoverflow.com/a/3293286/782754 tembel yükleme için bir özellik işaretlemek mümkün değil, ama diğer kavramların –

cevap

11

Garrison, kişiyi tek tabloya iki ilgili varlıkları map "varlık bölme" adlı bir özellik kullanabilirsiniz. Yani ilk varlığın içinde filestream mülkiyetinin hepsine sahip olursun. İkinci varlıkta birincil anahtar (birinci varlıkta olduğu gibi) ve filestream özelliği olacaktır. Bir tane oluşturun: modelinizdeki varlıklar arasında bir ilişki ve ardından her iki varlığı da aynı tabloya eşleyin. Artık filestream olan varlık ilişkilidir ve gerektiği gibi yükleyebilir veya yükleyebilirsiniz. Sadece olumsuz ana birimin özelliği olmadığını, bu nedenle ilgili kurum ve sonra mülke gidin gerekiyor.

myEntity.MyRelatedEntity.TheFileStreamProperty

İşte onu ben yazdım bir old blog post EDM Designer'daki bunun nasıl gösterir bu.

Ayrıca kodu önce aynı eşleme elde edebilirsiniz. İşte yazdığım bir makaleyi içeren bir MSDN makalesi yazdım. http://msdn.microsoft.com/en-us/data/hh272551

HTH Julie

+0

Teşekkür Julie kullanabilirsiniz. Bu sadece aradığım şey! –

+0

Duymak harika! :) –

İlgili konular