또 다른 방법으로 그림과 같이 매우 큰 파일에 맞게 동적으로 할당하는 mssql의 "image"열 유형을 사용하는 을 예로들 수 있습니다.
hbm.xml :
<property name="Photo" column="Photo" type="BinaryBlob" not-null="true"></property>
클래스 속성 :
private byte[] _photo;
public virtual byte[] Photo
{
get { return _photo; }
set { _photo = value; }
}
테스트는 NHibernate에 세션 얻기 위해 도우미를 사용하여 어떻게 큰 배열 우리가
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;
}
됩니다 에 대해 말하다? 수백 바이트는 varbinary 저장소를 사용하여 바이트 []로 완벽하게 작동합니다. – sisve
나는이 똑같은 것을 궁금해했다. 그러나 나의 경우에는 크기가 실제로 눈살을 찌푸린 채로 저장하는 것을 알고있다. –
바이트 배열의 길이는 2,000-3,000입니다 –