2011-03-28 2 views

답변

11

당신은 당신이 게으른 = "false"를

<class name="MyEntity" table="MyTable" lazy="false"> 
</class> 
+9

모든 연결에 대한 프로비저닝을 취소 할 수 있습니까? 그것은 내 주요 대상의 논박을 없애지 만 다른 대상과의 관계는 유지됩니다. – ryudice

0

나는 Entity Framework에서 비슷한 것을 달성하기 위해 AutoMapper을 사용하고 있습니다. 당신이 탐색 속성이없는 경우 일 것이다

var nonProxiedInstance = Mapper.DynamicMap<YourType>(proxiedInstance); 

. 그렇지 않으면 이러한 속성을 무시하도록 매핑을 구성해야합니다.

참고 : 이것은 (분명히) 비효율적 인 솔루션입니다.

+2

이것은 작동하지 않습니다. 프록시는 상속 된 (실제) 클래스의 특성을 포함하지 않으므로 맵핑 된 유형에서도 누락됩니다. –

2

이 코드와 클래스를 unproxy 수 있습니다 재귀 적으로 수행해야 함)

0

다음 코드를 사용하여 실제 객체를 얻을 수 있습니다.

InstanceType instance; 
if (proxiedInstance is INHibernateProxy) 
{ 
var lazyInitialiser = ((INHibernateProxy)proxiedInstance).HibernateLazyInitializer; 
instance = (InstanceType)lazyInitialiser.GetImplementation(); 
}