엔터티 프레임 워크는 "원래"엔터티 클래스를 제공하는 대신 프록시를 만들기 때문에 부모 클래스를 자식 클래스로 캐스팅하는 방법은 무엇입니까? 자동 생성 된 프록시 클래스가 원래 엔터티 클래스의 상속 구조를 사용하지 않기 때문에 "정상적인 방법으로"작동하지 않습니다.asp.net 엔터티 프레임 워크 : 상속 프록시 캐스팅
프록시 만들기 기능을 해제하는 것은 나를위한 옵션이 아닙니다.
도움이되었습니다. 감사합니다.
엔터티 프레임 워크는 "원래"엔터티 클래스를 제공하는 대신 프록시를 만들기 때문에 부모 클래스를 자식 클래스로 캐스팅하는 방법은 무엇입니까? 자동 생성 된 프록시 클래스가 원래 엔터티 클래스의 상속 구조를 사용하지 않기 때문에 "정상적인 방법으로"작동하지 않습니다.asp.net 엔터티 프레임 워크 : 상속 프록시 캐스팅
프록시 만들기 기능을 해제하는 것은 나를위한 옵션이 아닙니다.
도움이되었습니다. 감사합니다.
어떻게 부모 클래스를 하위 클래스로 변환합니까? 실제 실행시의 형태 이 아이 인 경우
당신은 단지 아이에게 부모를 캐스팅 할 수 있습니다. 이는 아동의 대리인이 아동으로부터 파생되기 때문에 비 대리인 및 대리인에게 적용됩니다. 따라서 은 어린이 인입니다. 부모의 프록시는 자식이 아니기 때문에 자식으로 캐스팅 할 수 없으므로 부모에게 자식을 캐스팅 할 수 없으며 자식은이 아닙니다.
예를 들어(DbContext
API를 사용하여) :
Parent parent1 = context.Parents.Create<Child>(); // proxy
Parent parent2 = new Child(); // non-proxy
Child child1 = (Child)parent1; // works
Child child2 = (Child)parent2; // works
을 다음과 같은 두가 작동하지 않습니다 :
public class Parent { ... }
public class Child : Parent { ... }
을 그런 다음 두 캐스트가 작동합니다
Parent parent1 = context.Parents.Create<Parent>(); // proxy
Parent parent2 = new Parent(); // non-proxy
Child child1 = (Child)parent1; // InvalidCastException
Child child2 = (Child)parent2; // InvalidCastException
두 형식 모두 정상적인 방식으로 작동합니다.
어떤 코드가 오류인지 및 수신중인 오류를 설명 할 수 있습니까? 필자는 비 프록시 프록시 객체에 프록시 객체를 전달하는 데 어떤 문제도 발생하지 않았습니다. –
음 부모 - 프록시 - 개체를 자식 개체로 캐스팅하고 싶습니다. 해당 하위 프록시 클래스를 모르기 때문에 원래 자식 클래스를 사용해야합니다. 이 캐스트는 InvalidCastException이됩니다. – Cleo
상속 체인은 그대로입니다. "자식"프록시 클래스가 무엇인지 알아낼 필요가 없습니다. 실수로 뭔가를하고있을 가능성이 있지만, 예제 코드가 없으면 정확히 무엇을 잘못하고 있는지 말할 수 없을 것입니다. –