두 가지 응용 프로그램이 있습니다. 하나는 XAF
(devexpress 프레임 워크)을 사용하고, 두 번째는 asp.net mvc를 사용합니다. 내 bussines 클래스는 XAF
app에 생성됩니다. 둘 다 동일한 데이터베이스를 사용합니다. XAF에서 내 수업하십시오 DB에서다형성과 LinqToSql
public class BaseClass:XPObject
{
// some fields
}
// This attribute mean that all fields will be stored in BaseClass table
[MapInheritance(InheritanceType.ParentTable]
public class Class1:BaseClass
{
// some fields
}
// This attribute mean that all fields will be stored in BaseClass table
[MapInheritance(InheritanceType.ParentTable]
public class Class2:BaseClass
{
// some fields
}
우리는 하나 개의 테이블이 있습니다 BaseClass
필드 BaseClass
에서, Class1
.
XAF는 ObjectType
(XAF가 자동으로 작성하는 XPObjectType
테이블에 FK입니다.)이라는 자체 필드를 추가합니다. 결과에서 우리는 DB에 있습니다
BaseClass:
ID some_fields_from_BaseClass some_fields_from_Class1 ObjectType
1 some_values some_values 1
XPObjectType:
ID TypeName AssemblyName
1 TestApp.Module.BO.Class1 TestApp.Module
지금, 나는 ASP.NET MVC 응용 프로그램에 쓴 :
Database.BaseClasses.Where(...some predicate...).ToList();
이 쿼리는 BaseClass
의 나에게 모음을 반환합니다. 그러나, 나는 그 쿼리가 파생 된 타입 (Class1
또는 Class2
또는)을 돌려 주길 바란다.
어떻게하면됩니까?
추신. IsDiscriminator
속성을 사용할 수 없습니다. FK이고 객체 복제를 원하지 않기 때문입니다 (Class1
, class2
asp.net mvc app).
흠을이 코드는 항상없는 baseclass를 반환합니다,하지만 난 내 쿼리 반환 유형 – user348173
아니, 당신이 좋아하는이 함수를 호출한다 파생 것을 원하는 : = GetData의'VAR 데이터 (FN); –