猿问

.thenInclude用于Entity Framework Core 2中的子实体

以前(使用.net 4.5.2和EF 6时)。我有一个通用的Get方法,它接受了许多包括以下内容的方法;


public abstract class DataContext : IdentityDbContext<ApplicationUser, ApplicationRole, int>, IDataContext

{

    public DataContext(DbContextOptions options)

    : base(options)

    {

    }


    // reduced for brevity


    public T Get<T>(int id, params Expression<Func<T, object>>[] includes) where T : class, IEntity

    {

        return this.Set<T>().Include(includes).FirstOrDefault(x => x.Id == id);

    }

我再举个例子。


context.Get<Job>(id, 

    x => x.Equipment,

    x => x.Equipment.Select(y => y.Type));

包括Job.Equipment和在内Job.Equipment.Type。


但是,当我将其移植到asp.net core 2上时,我尝试了相同的通用方法,但是如果尝试包含一个子实体,则会出现以下错误;

属性表达式“ x => {从x.Equipment select [y] .Type}中的设备y开始”无效。该表达式应表示属性访问:“ t => t.MyProperty”。有关包括相关数据的更多信息,请参见http://go.microsoft.com/fwlink/?LinkID=746393

谁能建议我如何解决这个问题,以便在Get<T>Entity Framework Core 2的通用方法中包含子实体?


慕桂英546537
浏览 201回答 2
2回答
随时随地看视频慕课网APP
我要回答