Sadece EF Code First CTP 5 kullanarak ikili (dosya) verileri saklamak ve almak için basit bir yol olup olmadığını anlamaya çalışıyorum? FILESTREAM tipini kullanmasını gerçekten çok isterdim, ama gerçekten işe yaraması için bir yol arıyorum.Entity Framework Code İlk CTP 5'i kullanarak görüntüleri nasıl depolarız?
cevap
SQL'de SQL FILESTREAM
'u kullanamazsınız. EF'in farklı veritabanı sunucularının üstünde çalışması gerekiyor ancak filestream özelliği SQL 2008 ve daha yeni özelliklerin bir özelliğidir. Bunu eski şekilde yapmaya çalışabilirsiniz - veritabanı tablonuzda varbinary(max)
kullanın ve eşlenmiş sınıfınızda bayt dizisini kullanın.
Düzenleme:
Küçük açıklama - Eğer veritabanında FILESTREAM
kullanabilirsiniz ancak EF akışı yararlanmak olmayacaktır. Standart varbinary(max)
olarak yükleyecektir.
Sadece mülkünüzü Ladislav'nın bahsettiği gibi [] olarak ilan edin.
public class Product
{
public int Id { get; private set; }
public string Name { get; set; }
public byte[] ProductImage { get; set; }
}
Bu oldukça fazla. Eğer mülkü haritalamazsanız, bu kural varbinary(max)
ile eşleşiyor. Eğer veritabanında bir görüntü sütun varsa zaten sadece ProductImage mülkiyet [Column(TypeName = "image")]
eklemek veya kod eşlemesi tercih ederseniz bağlam sınıfta OnModelCreating geçersiz kılma için bu ekleyin:
modelBuilder.Entity<Product>().Property(p => p.ProductImage).HasColumnType("image");
Ben onunla var sorun olduğunu Bir ürünü getirdiğimde her zaman ikili veriyi yüklemek istemediğimden, özelliği tembelleştirmenin bir yolunu bulamadım. Doğru hatırladığımdan emin değilim, ancak NHibernate bunu kutudan çıkarabilir.
Hep tabloyu normalleştirmek için de tembel yükleme yönetmek ve amacıyla bire-bir ilişki ileProductImage
gibi başka sınıf oluşturmak
:
public class ProductImage
{
public int ProductId { get; private set; }
public byte[] Image { get; set; }
}
Bu tekniği kullanarak büyük bir performans artışı gördüm. – jsturtevant
Dosya görüntüsü sütununu içermeyen bir görünüm oluşturmak ve ardından EF'de tablo yerine görünüme işaret eden ikinci bir varlık oluşturmak çok kolay olmaz mıydı? "ProductLite" –
@ C.List Yıllardır EF kullandığımı ve bunu yapmayı hiç düşünmediğime inanamıyorum. Bu harika bir fikir ve ben sadece bunu kullanmak için kullandım, aynı şeyi yapmak için kullandığım gereksiz bir manzaradan kurtulmak. Buna bir "sanal varlık" diyelim :) –
- 1. Entity Framework Kod Dağıtımı İlk
- 2. İlk olarak Entity Framework kodunu kullanarak satır güncelleştirme nasıl yapılır?
- 3. Gerçekte Entity Framework 4 Code-First CTP 5'de ilişkileri nasıl yürütüyorsunuz?
- 4. Entity Framework İlk Verilerin Eklenmesi Yeniden Oluşturma
- 5. Entity Framework
- 6. Entity Framework
- 7. Entity Framework -
- 8. Entity Framework
- 9. Entity Framework
- 10. Entity Framework Çekirdek
- 11. İkili [] dizisini Entity Framework Code-First yaklaşımıyla veritabanına nasıl depolanır
- 12. Entity Framework başlangıç zamanı
- 13. MS Entity Framework
- 14. Entity Framework vs AssociateWith
- 15. Kod İlk Entity Framework ile ProviderIncompatibleException - MVC 4
- 16. Entity Framework Code İlkesindeki ilgili varlıkların döngüsel yüklenmesini nasıl önlerim?
- 17. ihtiyacım Entity Framework
- 18. Entity Framework modelini kullanarak veri ekleme
- 19. Entity Framework veritabanına ilk oluşturulmuş öznitelikler için özellikler ekleyin
- 20. Entity Framework İstemdışıKoduFirstException
- 21. Hata ayıklama kodu ilk Entity Framework geçiş kodları
- 22. Entity Framework işlemleri nasıl işler?
- 23. ORM .net Entity Framework?
- 24. Entity Framework 6 Kod İlk - Gerekli Enum veri türü çalışmıyor
- 25. Entity Framework 7 denetim günlüğü
- 26. Entity Framework 5'teki LoadProperty
- 27. Entity Framework 4.3.1 Kod İlk: veritabanı oluşturuldu ancak tablolar
- 28. Entity Framework 7'de Bire bir ilişkiler İlk Kod
- 29. Entity Framework ve System.Data.SQLite
- 30. Entity Framework temkin yükleme
Evet, NHibernate sütun özgü tembel-yükleme yapabilirsiniz kutunun dışında: http://ayende.com/blog/4377/nhibernate-new-feature-lazy-properties. – gabe