У меня есть решение «MySolution» в VS. В одном проекте «Домен» Я определил де следующих классов:Атрибут FlushAction и Lazy
public class CarBase
{
public virtual void Foo();
}
public class Car : CarBase
{
[BelongsTo(..., Lazy=FetchWhen.OnInvoke)]
public virtual Person person { get; set; };
public override void Foo()
{
person.HasCar = true; // #1
person.Save();
}
}
В другом проекте «MySolution», названный «Bussines», я следующий код:
using(SessionScope session = new SessionScope(FlushAction.Never))
{
CarBase carBase = CarBase.GetItem(123);
carBase.Foo();
}
Итак, то, что проблема?. Этот код выходит из строя в # 1 из-за отсутствия доступа к ленивому атрибуту. Я не понимаю, почему, если этот объект находится в том же SessionScope от GetItem.
Additionaly, если в том же коде меняю FlushAction.Never к FlushAction.Auto, по ошибке пропадает.
Хотелось бы знать, почему это происходит ?. Почему следует FlushAction изменить свойства ленивая загрузка handeled?
Я не знаю, имеет ли значение метод overriden, или тот факт, что оба кода находятся в разных решениях. Наверное, нет, но ORM довольно удивительны.
Заранее спасибо.
PD: Если в следующей строке GetItem я:
if(carBase is Car)
((Car)carBase).HasCar.ToString();
Даже с FlushAction.Never, он также устраняет проблему.
Это веб-проект или форма Windows? – SaXeTz
Веб-проект .... –