我只是想弄清楚是否有一個簡單的方法來存儲和檢索使用EF Code First CTP 5的二進制(文件)數據?我真的很喜歡它使用FILESTREAM類型,但我真的只是尋找一些方法來使它工作。如何使用實體框架存儲圖像Code First CTP 5?
70
A
回答
37
您不能在EF中使用SQL FILESTREAM
。 EF應該在不同的數據庫服務器上工作,但文件流功能是SQL 2008和更新的特定功能。你可以嘗試以舊的方式 - 在你的數據庫表中使用varbinary(max)
,並在映射類中使用字節數組。
編輯:
澄清一下 - 你可以使用數據庫FILESTREAM
但EF不會採取流的優勢。它會將其作爲標準varbinary(max)
加載。
52
只需將您的財產聲明爲Ladislav提到的byte []。
public class Product
{
public int Id { get; private set; }
public string Name { get; set; }
public byte[] ProductImage { get; set; }
}
這是非常多的。如果您不映射該屬性,則會映射到varbinary(max)
。 如果在數據庫中的圖像列已經只是在ProductImage屬性添加[Column(TypeName = "image")]
或者如果你喜歡代碼映射這在上下文類添加到您的OnModelCreating覆蓋:
modelBuilder.Entity<Product>().Property(p => p.ProductImage).HasColumnType("image");
,我與它的問題是,我還沒有找到一種方法來使屬性懶惰,因爲我不一定要在每次獲取產品時都加載二進制數據。 我不知道我記得正確,但NHibernate可以開箱即用。
95
我總是創造這樣ProductImage
另一個類有一個一對一的關聯,以管理延遲加載,也正常化表:
public class ProductImage
{
public int ProductId { get; private set; }
public byte[] Image { get; set; }
}
+9
我看到使用這種技術的主要性能提高。 – jsturtevant 2013-08-18 11:45:18
相關問題
- 1. 如何在Code First Drop-Create模式下使用實體框架?
- 2. 如何使用Code First爲實體框架設置ProviderManifestToken?
- 3. 如何使用Code First實體框架鏈接屬性?
- 4. 實體框架4.1.Code First。由ID
- 5. Wpf Code First中的實體框架
- 6. Code First實體框架Asp.net MVC
- 7. 存儲文件在SQL CE 4使用實體框架Code-First方法
- 8. EF Code First CTP 5和SQL SErver 2008 R2
- 9. 如何在實體框架5中使用SQL Server OFFSET&FETCH FIRST?
- 10. 使用Code First在實體框架中重命名錶
- 11. 無法使用MySql Code First配置實體框架5中的關聯。
- 12. MVC 4實體框架5 - 存儲和接收圖像
- 13. 如何處理實體框架5 Code First和MVC中的派生類型?
- 14. 使用Code First搜索實體框架域模型
- 15. 存儲過程和實體框架5
- 16. 使用EF Code First存儲圖形
- 17. 實體框架代碼中的奇怪實體更新Code-First
- 18. 實體框架中CODE FIRST下的Table _MigrationHistory如何創建?
- 19. 如何使用實體框架5
- 20. 實體框架CTP 5 - 存儲庫模式 - 正在執行更新
- 21. 如何在實體框架4.3 Code First中禁用__MigrationHistory表的使用?
- 22. 使用實體框架4.1 Code-First在現有的MySQL數據庫上
- 23. 實體框架4 CTP 4/CTP 5通用存儲庫模式和單元可測試
- 24. 使用Code First從實體框架4.1升級到4.3時與Fluent-API不兼容使用Code First
- 25. 實體框架:Code First。共享和實例上下文
- 26. 實體框架CTP 5相關屬性不起作用
- 27. 實體框架5 - 無效的列名 - 逆向工程的Code First
- 28. EF Code First CTP 5:驗證取決於其他實體的實體(例如,唯一約束)
- 29. 不能使用存儲過程的實體框架5
- 30. 使用實體框架執行oracle的存儲過程5
是,NHibernate的可以做特定的列延遲加載開箱:http://ayende.com/blog/4377/nhibernate-new-feature-lazy-properties。 – gabe 2013-12-12 17:44:59