2010-03-13 3 views
1

Я уже немного почесываю голову здесь ... У меня есть класс Consumer и класс BillableConsumer, который наследует Consumer. Они оба являются частью набора Потребителей. Проблема в том, что этот запрос:Как получить только базовый класс (инфраструктура сущности)?

Consumer consumer = (from c in _ctx.Consumers where c.ID = id select c).First(); 

возвращает экземпляр BillableConsumer! Точно так же как этот запрос:

BillableConsumer bconsumer = (from c in _ctx.Consumers.OfType<BillableConsumer>() where c.ID = id select c).First(); 

Как я могу вернуть экземпляр только базового класса? (это отдельные таблицы в хранилище данных).

+2

Я думаю, пытаюсь сделать это является нарушением принципа замещения Лиск (см Http: // эн. wikipedia.org/wiki/Liskov_substitution_principle) Может быть BillableConsumer не является потребителем, и вы должны сделать ConsumerBase с общими полями и двумя наследниками: Consumer and BillableConsumer. –

ответ

2

Да, это немного сложно.

Но я сделал tip на этом некоторое время назад

Надеется, что это помогает

Alex

+2

для полноты, я бы предложил разместить образец кода в вашем ответе и указать свой собственный блог для получения дополнительной информации. –

Смежные вопросы