Как оказалось, это была проблема с пространством имен. Это был рефакторированный репозиторий, и в его верхней части было:
using System.Data.Entity;
С этим пространством имен оператор .Include был скомпилирован правильно, но EFCore не улавливал отношения. Добавьте:
using Microsoft.EntityFrameworkCore;
и вдруг SQL правильно генерирует соединения для активных нагрузок.
Я предполагаю, что Вы хотите настроить плагин в своем родительском англичанине, но использовать его только в наследованных проектах. У знатока есть раздел для этого - настраивают Ваши плагины в pluginManagement, но связывают их с фазой как раз в то самое время, когда Вам был нужен он, например, опустите тег фазы в pluginManagement, но укажите его под в Вас наследованный англичанин.
Можно объявить плагин в высокоуровневом англичанине и сказать ему быть пропущенным и затем сказать ему не быть пропущенным на дочернем уровне. Это не совсем автоматически, но очень минимально в многословии переопределения.
Породите Англичанина, отключив плагин, но объявив всю конфигурацию:
<plugin>
<groupid>org.apache.maven.plugins</groupid>
<artifactid>maven-surefire-plugin</artifactid>
<configuration>
<skip>true</skip>
...lots more config...
...lots more config...
...lots more config...
</configuration>
</plugin>
Дочерний Англичанин, включая плагин:
<plugin>
<groupid>org.apache.maven.plugins</groupid>
<artifactid>maven-surefire-plugin</artifactid>
<configuration>
<skip>false</skip>
</configuration>
</plugin>
Насколько я знаю, нет никакого универсального решения для этого. По крайней мере в настоящий момент...
Одна идея (я не попробовал его, но это может работать), должен определить, в родительском pom.xml цель выполнения, которая не существует, например:
<executions>
<execution>
<goals>
<goal>noGoal</goal>
</goals>
</execution>
</executions>
и в каждом ребенке, Вы переопределяете корректную цель.
Проблема этого решения (если это работает, конечно, ;)) состоит в том, что необходимо переопределить сменную конфигурацию для каждого ребенка. Иначе это не будет выполняться.
Это не совсем то, что вам нужно, но я думаю, что это подойдет вам.
Если вы объявите плагин в теге pluginManagement в родительском теге, конфигурация будет унаследована любыми дочерними проектами которые объявляют этот подключаемый модуль.
Например, в родительском объекте объявляется, что подключаемый модуль компиляции использует Java 5.
<pluginManagement>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<executions>
<execution>
<id>test-compile</id>
<goals>
<goal>testCompile</goal>
</goals>
<configuration>
<source>1.5</source>
<target>1.5</target>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</pluginManagement>
Затем в дочернем элементе вы просто объявляете подключаемый модуль компилятора, и конфигурация от родителя будет унаследована:
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
</plugin>
</plugins>
</build>
Итак, «сиддхадев» в точности правильный. Вы можете определить конфигурацию плагина в родительском pom с заданным идентификатором:
<build>
<pluginManagement>
<plugins>
<plugin>
<artifactId>maven-antrun-plugin</artifactId>
<executions>
<execution>
<id>child-caller</id>
<!-- 'phase' omitted -->
<goals>
<goal>run</goal>
</goals>
<configuration>
<tasks>
<echo message="called from child!" />
</tasks>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</pluginManagement>
</build>
И в дочернем POM вы можете явно указать этап, на котором он должен быть вызван:
<build>
<plugins>
<plugin>
<artifactId>maven-antrun-plugin</artifactId>
<executions>
<execution>
<id>child-caller</id>
<phase>compile</phase>
</execution>
</executions>
</plugin>
</plugins>
</build>
Я использовал это для нацеливания на различные JRE. К сожалению, поскольку вы не можете использовать maven-compiler-plugin с разными целевыми каталогами (что я считаю ошибкой в плагине), вы должны использовать Ant.
Я выбрал следующее решение:
Настройте плагин в родительском pom в разделе pluginManagement. Привязать плагин к существующей фазе.
Деактивировать плагин для родительского pom, привязав его к несуществующей фазе: переопределить фазу в разделе plugins-section.
Активировать плагин в каждом дочернем pom, включая плагин в разделе плагинов.
Пример parent-pom:
<defaultGoal>install</defaultGoal>
<pluginManagement>
<plugins>
...
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-install-plugin</artifactId>
<executions>
<execution>
<id>install-ejb-client</id>
<phase>install</phase>
<goals>
<goal>install-file</goal>
</goals>
<configuration>
<file>${ejb-client-file}</file>
<groupId>${project.groupId}</groupId>
<artifactId>${project.artifactId}</artifactId>
<version>${project.version}</version>
<packaging>jar</packaging>
<classifier>client</classifier>
</configuration>
</execution>
</executions>
</plugin>
...
</plugins>
</pluginManagement>
<plugins>
<plugin>
<!-- deactivate the plugin for this project, only child-projects do generate ejb-clients -->
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-install-plugin</artifactId>
<inherited>false</inherited>
<executions>
<execution>
<id>install-ejb-client</id>
<phase>none</phase>
</execution>
</executions>
</plugin>
...
</plugins>
</build>
Пример child-pom:
<build>
<plugins>
...
<plugin>
<!-- Install the generated client-jar. Property 'ejb-client-file' has to be set! Plugin configuration is in the parent pom -->
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-install-plugin</artifactId>
</plugin>
...
</plugins>
</build>