Следуя принципу ненавязчивого , не обязательно, чтобы «_myPartial» вводил контент непосредственно в секцию скриптов. Вы можете добавить эти сценарии частичного просмотра в отдельный файл .js
и ссылаться на них в раздел @scripts из родительского представления.
Это не удалось с EF6, я не думаю, что EF Core изменит это. Это связано с тем, что основная цель метода Find
- принести уже загруженный объект из локального кеша или загрузить его из базы данных, если ее там нет. Таким образом, интенсивная загрузка (Include
) может использоваться только в более позднем случае, тогда как в первом она должна будет выполнять явную загрузку. Сочетание обоих в одном методе может быть технически возможным, но сложно.
Я думаю, вы должны взять маршрут FirstOrDefault
(или SingleOrDefault
) в сочетании с активной загрузкой. Вы можете увидеть примерную реализацию для EF6 в методе GetById репозитория, используя активную загрузку . Его можно настроить для EF Core, как с помощью dbContext.Model.FindEntityType(typeof(T)).FindPrimaryKey().Properties
, чтобы найти свойства PK и построить предикат. Кроме того, поскольку EF Core содержит бит более сложный (требуются цепочки Include
/ ThenInclude
), вы можете найти интересный этот поток Можно ли создать альтернативу String based Include в ядре Entity Framework? .
Используйте «Найти» в сочетании с Load для явной загрузки связанных объектов. Ниже примера MSDN:
using (var context = new BloggingContext())
{
var post = context.Posts.Find(2);
// Load the blog related to a given post
context.Entry(post).Reference(p => p.Blog).Load();
// Load the blog related to a given post using a string
context.Entry(post).Reference("Blog").Load();
var blog = context.Blogs.Find(1);
// Load the posts related to a given blog
context.Entry(blog).Collection(p => p.Posts).Load();
// Load the posts related to a given blog
// using a string to specify the relationship
context.Entry(blog).Collection("Posts").Load();
}
здесь ссылка MSDN