【问题标题】:Entityframework subclass does not contain it's properties upon enumeratingEntityframework 子类在枚举时不包含它的属性
【发布时间】:2014-01-05 01:58:16
【问题描述】:

举个简单的例子:

我有一个类 Car,子类 Mazda

马自达有一个属性:MazdaWarrentyDate

使用我的 Db 上下文,我去:

var collection = db.user.cars;

然后,我循环使用:var c in collection

我使用条件来检查实例的类型是否为马自达,然后将其转换为马自达。 但是 MazdaWarrentyDate 为空!

在调试时,我在铸造它之前查看了 POCO,确实这个属性不存在,即使它识别为马自达类型。

这是实体框架的限制吗?如果是,我该如何解决?谢谢!

【问题讨论】:

标签: c# asp.net-mvc entity-framework poco


【解决方案1】:
var collection = db.user.cars.Where(t=> t is Mazda).OfType<Mazda>();

foreach (var car in collection ){

    //TODO 

}

【讨论】:

  • 谢谢,不过我还需要在一个迭代器中处理其他子类型,这可能吗?
  • 我认为这不会解决他的问题,除非他的 DBcontext 将 dbset 列为马自达或其子类型
  • 您可以创建一个模板方法,然后对其进行迭代。
  • @LukeMcGregor 他不必这样做。
  • 我认为@kkocabiyik 是正确的。也没有我的上下文只包含超类。
【解决方案2】:

关联对象为空的原因是因为我从查询开始 用户 -> 汽车等 为了解决这个问题,我只是从查询汽车开始,例如:

db.cars.where(c => c.user.id == myUserId);

这样做会导致相关的 poco 被延迟加载,并且可以在一个循环中进行迭代。

【讨论】:

    猜你喜欢
    • 2012-09-25
    • 1970-01-01
    • 2018-10-21
    • 1970-01-01
    • 2020-05-30
    • 2014-02-22
    • 2011-03-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多