我只是想弄清楚是否存在使用EF Code First CTP 5存储和检索二进制(文件)数据的简单方法?我真的很想使用FILESTREAM类型,但是我真的只是在寻找使它工作的方法。
Answers:
我总是ProductImage
用一对一关联创建另一个类,以管理延迟加载并规范化表:
public class ProductImage
{
public int ProductId { get; private set; }
public byte[] Image { get; set; }
}
就像Ladislav提到的那样,只需将您的属性声明为byte []即可。
public class Product
{
public int Id { get; private set; }
public string Name { get; set; }
public byte[] ProductImage { get; set; }
}
就是这样。如果您不映射该属性,则约定将映射到varbinary(max)
。如果数据库中已经有图像列,则只需添加[Column(TypeName = "image")]
ProductImage属性,或者如果您更喜欢代码映射,请将其添加到上下文类的OnModelCreating覆盖中:
modelBuilder.Entity<Product>().Property(p => p.ProductImage).HasColumnType("image");
我遇到的问题是,我没有找到一种使属性变得懒惰的方法,因为我不一定每次获取产品时都加载二进制数据。我不确定我是否记得正确,但是NHibernate可以开箱即用。