2010-03-13 70 views
1

我一直在这里挠我的头一阵子... 我有一个Consumer类和一个继承Consumer的BillableConsumer类。他们都是消费者集合的一部分。问题是,以下查询:如何检索基类(实体框架)?

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:// EN。 wikipedia.org/wiki/Liskov_substitution_principle) 可能是BillableConsumer不是消费者类型,您应该使ConsumerBase具有公共字段和两个继承者:Consumer和BillableConsumer。 – 2010-03-13 07:03:50

回答

2

是的,这有点棘手。

但我做了tip这个前阵子

希望这有助于

亚历

+2

为了完整性,我建议将代码示例发布到您的答案中,并指向您自己的博客以获取更多信息。 – 2010-03-13 08:34:14