【问题标题】:ADO.Net EF, Inheritance Table shows, but not the modelADO.Net EF,继承表显示,但不是模型
【发布时间】:2011-07-23 17:18:12
【问题描述】:

我创建了一个名为 MediaItem 的抽象实体,游戏从它继承。我自动创建数据库,并得到一个表 MediaItems 和 MediaItems_Game。

问题是当我在 ASP.Net 控制器中执行以下操作时:

私有 Models.DBContainer dataModel = new DBContainer();

数据模型。 ---> Intellisense 向我显示 MediaItem,但我找不到导航到或使用 MediaItems_Game 的方法,我该如何解决这个问题?即我如何在另一个表上获取带有一些“WHERE”约束的“游戏”列表(未图示)。

感谢任何信息,谢谢。

【问题讨论】:

    标签: asp.net database entity-framework inheritance ado.net


    【解决方案1】:

    这就是 EF 中继承的工作方式。您只有一组父类型。如果您只想获得游戏,您将使用OfType 方法:

    var games = dataModel.MediaItems.OfType<Game>().ToList();
    

    【讨论】:

    • 何时查询基表(游戏)仔细查看生成的 SQL。您会看到无论如何它最终都会查询派生表。没有足够的说法能够导致 TPT 继承导致的性能灾难(至少在查询基类时)请参阅:stackoverflow.com/questions/4126668/…
    • 啊哈!谢谢 :) 我现在开始明白这一点。感谢您在今天的课程中为我提供的帮助。
    • 另外,我如何渴望从其他表加载?我是否使用 .Include?这将如何形成,或者我应该明天再问这个问题?谢谢。
    • 你必须使用OfType的组合来获得派生实体,然后Include
    猜你喜欢
    • 2022-11-17
    • 1970-01-01
    • 2012-01-22
    • 2012-09-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多