Başka bir şekilde, resim gibi çok büyük dosyaları sığdırmak için mssql içinde "image" sütun tipi sütununu kullanarak başka bir yol, işte bir örnek.
hbm.xml:
<property name="Photo" column="Photo" type="BinaryBlob" not-null="true"></property>
sınıf özelliği:
private byte[] _photo;
public virtual byte[] Photo
{
get { return _photo; }
set { _photo = value; }
}
Testi, nhibernate oturumu almak için bir yardımcı kullanarak: ne kadar büyük dizi biz
Image image = Image.FromFile(@"C:\Documents and Settings\someuser\Desktop\logoTop.gif");
byte[] imageByte;
using (MemoryStream ms = new MemoryStream())
{
image.Save(ms, ImageFormat.Gif);
imageByte = ms.ToArray();
}
NHSession sessionManager = new NHSession();
using (ISession session = sessionManager.GetSession())
using (ITransaction tx = session.BeginTransaction())
try
{
MyPhoto photo = new MyPhoto();
photo.Photo = imageByte;
session.Save(photo);
session.Refresh(photo);
Console.WriteLine(photo.EverifyPhotoId);
tx.Commit();
}
catch (HibernateException)
{
if (tx.IsActive)
tx.Rollback();
throw;
}
vardır hakkında konuşmak? Birkaç yüz bayt, varbinary depolama kullanarak bir bayt [] ile mükemmel şekilde çalışır. – sisve
Ben de aynı şeyi merak ettim, ama benim durumumda, çok daha büyük (multi-MB) - uygulamada büyüklüğünün çatlamış olduğu blobları depoladığımı bilmeme rağmen. –
Bayt dizilerinin uzunluğu yaklaşık 2.000-3.000'dir. –