2017-12-12 31 views
-1

Entity Framework를 사용하여 테이블에서 데이터를 가져 오려면이 모델에 TPT Type이 있어야합니다. 속성 유형 목록 결과를 반환합니다. 어떻게 EF에서 다중 하위 목록을 선택할 수 있습니까?Ef 선택 투영에서 TPT 모델의 다중 하위 클래스는 어떻게 생깁니 까?

db.Properties.Select(x => 
       { 
        if (x.PropertyType == Apartment) 
        { 
         new Apartment() { } 
        } 
        else if (x.PropertyType == Vila) 
        { 
         new Vila() { } 
        }, 
        else if (x.PropertyType == PropertyType.Farm) 
        { 
         new Farm() { } 
        } 
        ... 
       }).ToList(); 

어떻게하면됩니까?

+0

당신이'db.Properties' 자체에 반환 항목을 살펴나요 이런 식으로 해결? –

+0

반환 유형에 속성의 하위 유형이 있지만 하위 유형의 모든 항목을 가져 오지 않으려합니다. – mosi98

+1

질문을 편집하고 예상되는 결과를 더 구체적으로 지정하십시오. 또한 사용중인 EF 버전에 질문에 태그를 답니다. –

답변

-1

나는이 문제 오순절은

var vila = db.Properties.OfType<Vila>().Select(p => new Vila 
        { 
         BuildingMainArea = p.BuildingMainArea, 
        }).Take(5).AsQueryable(); 

        var apartment = db.Properties.OfType<Apartment>().Select(p => new Apartment 
        { 
         BuildingMainArea = p.BuildingMainArea, 
         DebtPrice = p.DepositPrice 
        }).Take(5).AsQueryable(); 
        var animal = db.Properties.OfType<Animal>().Select(p => new Animal 
        { 
         BuildingMainArea = p.BuildingMainArea, 
         DebtPrice = p.DepositPrice 
        }).Take(5).AsQueryable(); 
        var office = db.Properties.OfType<Office>().Select(p => new Office 
        { 
         BuildingMainArea = p.BuildingMainArea, 
         DebtPrice = p.DepositPrice 
        }).Take(5).AsQueryable(); 
        var farm = db.Properties.OfType<Farm>().Select(p => new Farm 
        { 
         DebtPrice = p.DebtPrice 
        }).Take(5).AsQueryable(); 

        var result = vila 
         .AsEnumerable() 
         .Concat<Property>(apartment) 
         .Concat(animal) 
         .Concat(farm) 
         .Concat(office) 
         .AsQueryable().ToList();