ฉันใช้ System.Linq.Dynamic.Core;
และวิธีการขยายต่อไปนี้เพื่อเข้าถึง DbSet แบบไดนามิกตามชื่อและสร้างแบบสอบถามจากสตริง
นี่คือวิธีการขยาย:
namespace Microsoft.EntityFrameworkCore
{
public static partial class CustomExtensions
{
public static IQueryable Query(this DbContext context, string entityName) =>
context.Query(context.Model.FindEntityType(entityName).ClrType);
public static IQueryable Query(this DbContext context, Type entityType) =>
(IQueryable)((IDbSetCache)context).GetOrAddSet(context.GetDependencies().SetSource, entityType);
}
}
นี่คือวิธีที่ฉันเข้าถึง DbSet:
IQueryable<T> dbSet = (IQueryable<T>)_db.Query(entityName);
วิธีนี้ใช้ได้ผลดี ฉันสามารถสร้างแบบสอบถามแล้วสร้างรายการได้ แต่ไม่มีเอนทิตีที่ซ้อนอยู่โหลดเลย ดูเหมือนว่า IQueryable
ไม่มีคำจำกัดความสำหรับ Include()
ฉันสามารถดูวิธีการรวมได้หากฉันเข้าถึงบริบท db โดยตรงในลักษณะปกติ แต่ไม่ได้ใช้วิธีการแบบไดนามิกนี้
ฉันจะรวมเอนทิตีที่ซ้อนกันโดยใช้วิธีไดนามิกได้อย่างไร