2009-09-30 2 views
1

Я попытался лениво загрузить свойство в моей модели домена, но ленивая загрузка не работает. (Он всегда загружается).NHibernate lazy loading свойство - что означает средство для байт-кода времени сборки?

[Property(0, Column = "picture", Lazy=true)] 
public virtual System.Byte[] Picture 
{ 
     get { return picture; } 
     set { picture = value; } 
} 

При чтении документации here он говорит, что это требует времени построения байткодом приборов. Что это значит - и как я могу его получить?

+0

См. Ответ Аарона Фишера. Вы должны взять IList, ленивая загрузка не работает с массивами, потому что массивы не могут быть получены (что используется для добавления ленивых функций загрузки с помощью прокси-сервера, запущенного во время выполнения). Забудьте об увеличении времени байт-кода в build-time, это не нужно. –

ответ

0

Для ленивой загрузки на работу NHibernate использует перехват (через динамические объекты). Это означает, что он завершает ваш вызов Picture, и когда вы сначала вызываете Picture, он будет загружать свойство из базы данных.

Для этой работы он может использовать один из трех типов динамических структур объектов:

  • Замок DynamicProxy
  • Линьфу
  • Spring

При загрузке NHibernate есть еще одна папка с тремя типами этих плагинов динамических объектов, и вам нужно скопировать три библиотеки DLL в папку nhibernate (где находится nhibernate.dll) и установить свойство в вашей конфигурации nhibernate fi ле.

<property name="proxyfactory.factory_class">NHibernate.ByteCode.LinFu.ProxyFactoryFactory, NHibernate.ByteCode.LinFu</property> 

Ref: http://nhforge.org/blogs/nhibernate/archive/2008/11/09/nh2-1-0-bytecode-providers.aspx

НТН Alex

+0

Я пробовал его с Linfu и Spring - но он тоже не ленился загрузить объект. объект изображения всегда инициализировался (даже если до этого не было доступа) – bernhardrusch

1

Я вы пробовали коллекцию, а затем массив?

[Property(0, Column = "picture", Lazy=true)] 
public virtual IList<System.Byte> Picture 
{ 
     get { return picture; } 
     set { picture = value; } 
} 

 Смежные вопросы

  • Нет связанных вопросов^_^