6 entity-framework entity-framework-core .net-core asp.net-core .net-core-3.1
我有一个基于 ASP.NET Core 3.1 的项目,我使用 Entity Framework Core 3.1 作为 ORM。
我有以下两个实体模型
public class PropertyToList
{
    public int Id { get; set; }
    public int ListId { get; set; } 
    public int UserId { get; set; }
    public int PropertyId { get; set; }
    // ... Other properties removed for the sake of simplicity
    public virtual Property Property { get; set; }
}
public class Property
{
    public int Id { get; set; }
    // ... Other properties removed for the sake of simplicity
    public int TypeId { get; set; } 
    public int StatusId { get; set; }
    public int CityId { get; set; }
    public virtual Type Type { get; set; }
    public virtual Status Status { get; set; }
    public virtual City City { get; set; }
}
我正在尝试查询用户与之相关的所有属性。该PropertyToList对象告诉我用户是否与某个属性相关。这是我所做的
// I start the query at a relation object
IQueryable<Property> query = DataContext.PropertyToLists.Where(x => x.Selected == true)
                                        .Where(x => x.UserId == userId && x.ListId == listId)
                                        // After identifying the relations that I need,
                                        // I only need to property object "which is a virtual property in" the relation object
                                        .Select(x => x.Property)
                                        // Here I am including relations from the Property virtual property which are virtual properties
                                        // on the Property
                                        .Include(x => x.City)
                                        .Include(x => x.Type)
                                        .Include(x => x.Status);
List<Property> properties = await query.ToListAsync();
但是该代码抛出了这个错误
包含已用于不可查询的实体
什么可能导致这个问题?我该如何解决?
JMP*_*JMP 10
在引用父实体后立即放置您的包含。您也可以执行 ThenInclude 以带入包含实体的子实体。您需要为每个 ThenInclude 执行一个 Include。
然后您可以在包含/过滤后进行选择。就像是:
var query = DataContext.PropertyToLists
.Include(p => p.Property).ThenInclude(p => p.City)
.Include(p => p.Property).ThenInclude(p => p.Type)
.Include(p => p.Property).ThenInclude(p => p.Status)
.Where(p => p.Selected == true && p.UserId == userId && p.ListId == listId)
.Select(p => p.Property);
| 归档时间: | 
 | 
| 查看次数: | 4532 次 | 
| 最近记录: |