C#,EF,多级继承,数据不会加载

时间:2017-01-15 01:22:03

标签: c# entity-framework-6

我很难从派生类中检索数据

在我的示例中,我想以CoatRecipe具有CoastSteps的方式提取数据,并且ScrubRecipes具有ScrubSteps。

所有步骤都有一系列输出。

在此示例中,正在保存数据,我可以检索配方,步骤,但不会检索输出。我错过了什么?

我应该补充一下。在这个例子中。 Recipe1.Steps没有OutputList。 OutputList是我想要检索的。

我正在使用EntityFramework 6.1

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<table id="Table">
  <thead>
    <tr>
      <td>ID</td>
      <td>Code</td>
      <td>Client</td>
      <td>Debit/Credit</td>
      <td>Quantity</td>
      <td>Price</td>
      <td>Options</td>
    </tr>
  </thead>
  <tbody id="TableBody">
    <tr>
      <td>1</td>
      <td>1</td>
      <td>3</td>
      <td>Debit</td>
      <td class="quantity" data-value="10">10</td>
      <td class="price" data-value="12.00">12.00</td>
      <td>
        <input type="button" value="Delete" data-action="delete-row" />
      </td>
    </tr>
    <tr>
      <td>2</td>
      <td>2</td>
      <td>12</td>
      <td>Debit</td>
      <td class="quantity" data-value="5">5</td>
      <td class="price" data-value="10.00">10.00</td>
      <td>
        <input type="button" value="Delete" data-action="delete-row" />
      </td>
    </tr>
  </tbody>
  <tfoot id="TableFooter">
    <tr>
      <td colspan="4">Total</td>
      <td class="total quantity">15</td>
      <td class="total price">170.00</td>
    </tr>
  </tfoot>
</table>

<input type="button" id="xd" value="add row">

1 个答案:

答案 0 :(得分:1)

在使用不包含所需集合的父类RecipeStep时,您必须使用explicit loading来加载集合。您还需要将每个RecipeStep强制转换为包含该集合的子类。

foreach (var coatStep in recipe1.steps.OfType<CoatStep>())
{
    db.Entry(coatStep).Collection(x => x.outputList).Load();
}

此执行的性能不是最好的,因为它会导致每次迭代的数据库查询。但是,除非你拥有大量的实体,否则它确实不应该太糟糕。

相关问题